计算二叉树深度

#include
#include
int flag=0;
using namespace std;
typedef struct node
{
struct node *left;
struct node *right;
char data;
}Node;
Node *binarytree(char a[],char b[],int len)
{
int i;
if(len==0)
return NULL;
Node p;
p=(Node
)malloc(sizeof(Node));
p->data=a[0];
for(i=0;i {
if(b[i]a[0])
break;
}
p->left=binarytree(a+1,b,i);
p->right=binarytree(a+i+1,b+i+1,len-1-i);
return p;
}
//用一个juge函数判断他的深度,当深度大于最大的深度 要更改深度
void judge(Node *p,int level)
{
if(p
NULL)
return;
if(level>flag)
flag=level;
if(p->left!=NULL)
judge(p->left,level+1);
if(p->right!=NULL)
judge(p->right,level+1);
}
int main()
{
int i,n;
cin>>n;
char pre[n],mid[n];
for(i=0;i cin>>mid[i];
Node tree;
tree=(Node
)malloc(sizeof(Node));
tree=binarytree(pre,mid,n);
judge(tree,1);
cout< }

你可能感兴趣的:(计算二叉树深度)