【数据结构_树_Tree_0971】统计利用先序遍历创建的二叉树的深度

时间:2023-01-09 11:24:00

A##
ABC####
AB##C##
ABCD###E#F##G##
A##B##
-------------------------------------

1
3
2
4
1



#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct node
{
char data;
struct node *L_Child,*R_Child;
}Tree;
void initTree(Tree *&T)
{
char str;
cin>>str;
if(str!='#')
{
T=(Tree *)malloc(sizeof(Tree));
T->data=str;
initTree(T->L_Child);//先序遍历就是前序遍历,从左节点开始遍历
initTree(T->R_Child);
}
else T=NULL;
}
int Deepth_of_Tree(Tree *&T)
{
if(T==NULL) return 0;
else
{
int sum1=0,sum2=0;
sum1=Deepth_of_Tree(T->L_Child);//左链的长度;
//cout<<"sum1="<<sum1<<" "<<"now"<<endl;
sum2=Deepth_of_Tree(T->R_Child);//右链的长度;
//cout<<"sum2="<<sum2<<" "<<"now"<<endl;
if(sum1>sum2) return sum1+1;
else return sum2+1;
}
}
int main()
{
Tree *T;
initTree(T);
int num=Deepth_of_Tree(T);
cout<<num;
return 0;
}