#include <stdio.h>
#include <malloc.h>
typedef char ElemType;
typedef struct Node
{
ElemType data;
Node *Lchild,*Rchild;
} BiTNode,*BiTree;
int depth2=0;
BiTree CreateBiTree();//建立二叉树
int PostTreeDepth(BiTree T);//后序遍历二叉树高度
void PreTreeDepth(BiTree T,int h);//先序遍历二叉树高度
int main(void)
{
BiTree root=CreateBiTree();
int depth1=PostTreeDepth(root);
printf("%d\n",depth1);
PreTreeDepth(root,1);
printf("%d\n",depth2);
return 0;
}
BiTree CreateBiTree()//建立二叉树
{
ElemType x;
BiTree T;
scanf("%c",&x);
if(x=='#')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=x;
T->Lchild=CreateBiTree();
T->Rchild=CreateBiTree();
}
return T;
}
int PostTreeDepth(BiTree T)//后序遍历二叉树高度
{
int hl,hr,max;
if(T!=NULL)
{
hl=PostTreeDepth(T->Lchild);
hr=PostTreeDepth(T->Rchild);
max=hl>hr?hl:hr;
return max+1;
}
else
return 0;
}
void PreTreeDepth(BiTree T,int h)//先序遍历二叉树高度
{
if(T!=NULL)
{
if(h>depth2)
depth2=h;
PreTreeDepth(T->Lchild,h+1);
PreTreeDepth(T->Rchild,h+1);
}
}
求二叉树高度
最新推荐文章于 2022-03-13 20:59:39 发布