本文主要是介绍求二叉树中指定节点所在的层数(可运行),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
运行环境.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<rear){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'));}
这篇关于求二叉树中指定节点所在的层数(可运行)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!