#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
typedef long long LL;
#define Elemtype int
typedef struct node
{
struct node *lchild,*rchild;
int val;
int bf;
}node,*BiTree;
BiTree Create(BiTree &T)//先序建立一棵二叉树
{
int val;
scanf("%d",&val);
if(val==0) T=NULL;
else
{
T=(BiTree)malloc(sizeof(node));
T->val=val;
Create(T->lchild);
Create(T->rchild);
}
return T;
}
int dfs(BiTree T)
{
int llen=0,rlen=0;
if(T==NULL) return 0;
llen=dfs(T->lchild);
rlen=dfs(T->rchild);
if(llen>rlen)
{
T->bf=llen-rlen;
printf("%d>-->%d\n",T->bf,T->val);
return llen+1;
}
else
{
T->bf=llen-rlen;
printf("%d>-->%d\n",T->bf,T->val);
return rlen+1;
}
}
int main()
{
cout<<"请按照好先序遍历输入一棵二叉树"<<endl;
BiTree T=Create(T);
printf("二叉树高度为:%d\n",dfs(T));
return 0;
}
//测试数据:1 2 3 5 0 0 0 4 0 0 2 4 0 0 3 0 5 0 0