#include<stdio.h>
#include <string.h>
#include<stdlib.h>
//二叉树的二叉链表结构
typedef struct Node
{
char data;
struct Node *l;
struct Node *r;
}BiTNode,*BiTree;
//建立二叉树
struct Node *CreateBitree()
{
char ch;BiTree p=NULL;
scanf_s("%c",&ch);
if(ch=='#')
{
p=NULL;
}
else
{ p=(struct Node *)malloc(sizeof(struct Node));
p->data=ch;
p->l=CreateBitree();
p->r=CreateBitree();
}
return p;
}
//后序遍历
void PostOrder(BiTree p) {
if(p==NULL) {
return;
} else {
PostOrder(p->l);
PostOrder(p->r);
printf("%c", p->data);
}
}
//求高度,用的是递归
int PostTreeDepth(BiTree p)
{
int hl,hr,max=0;
if(p!=NULL)
{
hl=PostTreeDepth(p->l);
hr=PostTreeDepth(p->r);
max=((hl>hr?hl:hr)+1);
}
return max;//函数返回值就可以理解为解决一个问题以后得到的结论,把这个结论交给别人,而递归则是把递归结束后的结果返回给main
printf("wqrfwqef");//此语句不执行,因为之前已经return结束了
}
int main()
{
BiTree m;
m=CreateBitree();
PostOrder(m);
printf("%d",PostTreeDepth(m));
system("pause");
}
求二叉树的高度
最新推荐文章于 2022-03-13 20:59:39 发布