求二叉树高度

来源:互联网 发布:怎么复制筛选后的数据 编辑:程序博客网 时间:2024/05/17 16:13
#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);    }}

原创粉丝点击