如果对您有用,点个赞,关注一下哦!毕竟像我这种不用付monyY的博主不多了,且行且珍惜吧!俺只想要数据【偷笑】
运行环境.cpp
如果没有输出结果一定是建树错误!!!!!
下面我建了两棵树,大家可以参考
输入:abd##e##cf##g##
输出:3
树形:
输入:abd###ce###
输出:1
树形:
核心代码:
int btDepth(BiTree t){if (!t)return 0;int front=-1,rear=-1;int last=0,level=0;BiTree Q[100];Q[++rear]=t;BiTree p;while (front<rear){p=Q[++front];if (p->lchild&&p->rchild)level++;if (p->lchild)Q[++rear]=p->lchild;if (p->rchild)Q[++rear]=p->rchild;}return level;
}
完整可运行代码:
#include "bits/stdc++.h"
using namespace std;
typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;int tag;
}BiTNode,*BiTree;void createTree(BiTree &t){char ch;ch=getchar();if (ch=='#') t=NULL;else{t=(BiTNode *) malloc(sizeof (BiTNode));t->data=ch;t->tag=0;t->lchild=NULL;t->rchild=NULL;createTree(t->lchild);createTree(t->rchild);}
}int btDepth(BiTree t){if (!t)return 0;int front=-1,rear=-1;int last=0,level=0;BiTree Q[100];Q[++rear]=t;BiTree p;while (front<rear){p=Q[++front];if (p->lchild&&p->rchild)level++;if (p->lchild)Q[++rear]=p->lchild;if (p->rchild)Q[++rear]=p->rchild;}return level;
}int main() {BiTree t;createTree(t);printf("%d", btDepth(t));
}
此程序是在求数的深度的基础上修改的,原理很好懂,大家只需要看这个函数就可以了 btDepth()。