二叉树

  1. 数组实现
    一般用于完全二叉树,实现略。

  2. 链表实现

typedef struct treeNode{
    ElementType Data;
    treeNode *Left;
    treeNode *Right;
}TreeNode;
void PreOrderTraversal(TreeNode *BT) //先序遍历,非递归实现利用stack
{
    if(BT)
    {
        printf(“%d”, BT->Data);
        PreOrderTraversal(BT->Left);
        PreOrderTraversal(BT->Right);
    }
}
void InOrderTraversal(TreeNode *BT)  //中序遍历,非递归实现利用stack
{
    if( BT )
    {
        InOrderTraversal( BT->Left );
        printf(“%d”, BT->Data);
        InOrderTraversal( BT->Right );
    }
} 
void PostOrderTraversal(BinTree BT)  //后序遍历,非递归实现利用stack
{
    if( BT )
    {
        PostOrderTraversal(BT->Left);
        PostOrderTraversal( BT->Right);
        printf(“%d”, BT->Data);
    } 
} 
void LevelOrderTraversal(BinTree BT)  //层序遍历,利用队列
{
    Queue Q;
    BinTree T;
    if(!BT)
        return;
    Q = CreatQueue(MaxSize);
    AddQ(Q, BT);
    while(!IsEmptyQ(Q))
    {
        T = DeleteQ(Q);
        printf(“%d\n”, T->Data);
        if(T->Left)
            AddQ(Q, T->Left);
        if(T->Right)
        AddQ(Q, T->Right);
    }
}
int PostOrderGetHeight(BinTree BT) //求二叉树高度
{
    int HL, HR, MaxH;
    if(BT)
    {
        HL = PostOrderGetHeight(BT->Left);
        HR = PostOrderGetHeight(BT->Right);
        MaxH =(HL > HR)? HL : HR;
        return (MaxH + 1);
    }
    else
        return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值