二叉树的操作

来源:互联网 发布:福禄克435下载数据 编辑:程序博客网 时间:2024/06/06 02:29

1.二叉树的遍历
树的遍历是访问树的每个结点,且每个结点被访问一次。
分为四种方式:先序遍历,中序遍历,后序遍历,层序遍历。
代码实现:

void InorderTraversal( BinTree BT ){    if(BT)    {        InorderTraversal(BT->Left);        printf(" %c",BT->Data);        InorderTraversal(BT->Right);    }    return ;}void PreorderTraversal( BinTree BT ){    if(BT)    {        printf(" %c",BT->Data);        PreorderTraversal(BT->Left);        PreorderTraversal(BT->Right);    }    return ;}void PostorderTraversal( BinTree BT ){    if(BT)    {        PostorderTraversal(BT->Left);        PostorderTraversal(BT->Right);        printf(" %c",BT->Data);    }}void LevelorderTraversal( BinTree BT ){    BinTree a[10000];    int head = 0,rear = 0;    if(!BT)        return ;    a[rear++] = BT;    while(rear > head)    {        BinTree x = a[head];        printf(" %c",x->Data);        head++;        if(x->Left)            a[rear++] = x->Left;        if(x->Right)            a[rear++] = x->Right;    }    return ;}

2.求二叉树的高度
根结点的高度是左子树的高度和右子树高度两者中最大值加1。

int GetHeight( BinTree BT ){    int HL,HR,MaxH;    if(BT)    {        HL = GetHeight(BT->Left);        HR = GetHeight(BT->Right);        MaxH = HL>HR?HL:HR;        return MaxH+1;    }    else        return 0;}
0 0