09-D. DS树--二叉树高度
作者:互联网
09-二叉树遍历-
题目描述
给出一棵二叉树,求它的高度。二叉树的创建采用前面实验的方法。
注意,二叉树的层数是从1开始
输入
第一行输入一个整数t,表示有t个二叉树
第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行
输出
每行输出一个二叉树的高度
输入样例
1
AB0C00D00
3
#include<iostream>
#include<string>
using namespace std;
class btnode
{
public:
char data;
btnode *lchild;
btnode *rchild;
btnode():lchild(NULL),rchild(NULL){}
~btnode(){}
};
class bitree
{
btnode *root;
int pos;
string strtree;
btnode *createbitree()
{
btnode *T;
char ch;
ch=strtree[pos++];
if(ch=='0')
T=NULL;
else
{
T=new btnode();
T->data=ch;
T->lchild=createbitree();
T->rchild=createbitree();
}
return T;
}
int height(btnode *t)
{
if(t==NULL)
return 0;
else if(t->lchild==NULL&&t->rchild==NULL)
return 1;
int lh=height(t->lchild);
int rh=height(t->rchild);
if(lh>rh)//哪边高输出哪边
return 1+lh;
else
return 1+rh;
}
public:
bitree(){};
~bitree(){};
void createbitree(string treearray)
{
pos=0;
strtree.assign(treearray);
root=createbitree();
}
int height()
{return height(root);}
};
int main()
{
int t;
cin>>t;
while(t--)
{
string tree;
bitree T;
cin>>tree;
T.createbitree(tree);
cout<<T.height()<<endl;
}
return 0;
}
标签:return,--,09,btnode,int,二叉树,NULL,createbitree 来源: https://blog.csdn.net/bianchengfive/article/details/121277243