題目描述
給出一棵二叉樹,求它的高度。二叉樹的創建采用前面實驗的方法。
注意,二叉樹的層數是從1開始
輸入
第一行輸入一個整數t,表示有t個二叉樹
第二行起輸入每個二叉樹的先序遍歷結果,空樹用字符‘0’表示,連續輸入t行
輸出
每行輸出一個二叉樹的高度
樣例輸入
1 AB0C00D00
樣例輸出
3
提示
#include<iostream> #include<string> using namespace std; class BiTreeNode { public: char data; BiTreeNode *Left; BiTreeNode *Right; BiTreeNode() { Left=NULL; Right=NULL; } ~BiTreeNode() { delete Left; delete Right; } }; class BiTree { public: BiTreeNode *Root; int pos; string strTree; int deep; BiTree(string str) { pos=0; deep=0; strTree=str; Root=CreateBiTree(); } BiTreeNode *CreateBiTree() { char ch=strTree[pos]; pos++; if(ch=='0') { return NULL; } else { BiTreeNode *T; T=new BiTreeNode(); T->data=ch; T->Left=CreateBiTree(); T->Right=CreateBiTree(); return T; } } void countdeep(BiTreeNode *p,int i) { if(p) { i++; if(p->Left==NULL&&p->Right==NULL) { if(deep<i) deep=i; } countdeep(p->Left,i); countdeep(p->Right,i); } } }; int main() { int T; cin>>T; while(T--) { string str; cin>>str; BiTree tree(str); tree.countdeep(tree.Root,0); cout<<tree.deep<<endl; } return 0; }
