运行环境.cpp
我这里设置的是查字符e的层数,大家可以在main函数里改成自己想查的字符。(输入的字符一定是自己树里有的)。
如果没有输出结果,一定是建树错误!!!!!!!
输入:abd###ce###
输出:3
树形:

- #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,char x){
- if (!t)
- return 0;
- int front=-1,rear=-1;
- int last=0,level=0;
- int m=0;//
- BiTree Q[100];
- Q[++rear]=t;
- BiTree p;
- while (front
- p=Q[++front];
- if (p->lchild)
- Q[++rear]=p->lchild;
- if (p->rchild)
- Q[++rear]=p->rchild;
- if (front==last){
- level++;
- last=rear;
- if (p->data==x)
- return level;
- }
- if (p->data==x)
- return level+1;
- }
- }
- int main() {
- BiTree t;
- createTree(t);
- printf("%d", btDepth(t,'e'));
-
- }