给出一棵二叉树,求它的高度。二叉树的创建采用前面实验的方法。
注意,二叉树的层数是从1开始
标签:delete 创建 ++ 表示 public 方法 树的高度 遍历 int
给出一棵二叉树,求它的高度。二叉树的创建采用前面实验的方法。
注意,二叉树的层数是从1开始
第一行输入一个整数t,表示有t个二叉树
第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行
每行输出一个二叉树的高度
#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; }
标签:delete 创建 ++ 表示 public 方法 树的高度 遍历 int
原文地址:https://www.cnblogs.com/SZU-DS-wys/p/12180798.html