数据结构--二叉树遍历

二叉树结构体定义

    typedef struct TreeNode *BinTree
    struct TreeNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    } 

遍历函数

    void PreOrderTraversal( BinTree BT ):先序----根、左子树、右子树;
    void InOrderTraversal( BinTree BT ): 中序---左子树、根、右子树;
    void PostOrderTraversal( BinTree BT ):后序---左子树、右子树、根
    void LevelOrderTraversal( BinTree BT ):层次遍历,从上到下、从左到右

前序遍历函数(递归)

    void PreOrderTraversal( BinTree BT ){
        if(BT){
            printf("%d",Bt->Data);
            PreOrderTraversal( BT->Left );
            PreOrderTraversal( BT->Right );
        }
    }

前序遍历函数(非递归)

    void PreOrderTraversal( BinTree BT ){
        BinTree T=BT;
        Stack S=CreatStack(MaxSize);
        //树不为空 
        //栈不为空 
        while(T||!isEmpty(S)){
            while(T){
                //节点入栈 
                Push(S,T);
                printf("%d",T->Data);
                //转向左节点
                T=T->Left;
            } 
            if(isEmpty(S)){
                //出栈 
                T=Pop(S);
                //转向右节点 
                T=T->Right;
            }
        }
    }

层次遍历

    void LevelOrderTraversal ( BinTree BT ){
        Queue Q;
        BinTree T;
        //空树返回 
        if(!BT) return;
        Q=CreatQueue(MaxSize);
        AddQ(Q,BT);
        while(!Empty(Q)){
            T=DeleteQ(Q);
            printf("%d",T->Data);
            if(T->Left)AddQ(Q,T->Left);
            if(T->Right)AddQ(Q,T->Right);
        } 
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值