每日編程10之二叉樹的先序遍歷的非遞歸版本






這是用棧模擬的一個過程,

要注意的地方是:

(1)入棧的順序是先右子樹,後左子樹,這是才能保證出棧是先左後右


初始化時:若根節點不爲NULL,將根節點入棧,否則return;

核心處理操作:打印數節點元素值

循環結束條件:棧爲空


核心代碼:

int TreePrint_preorder_nonRecur(BTree root)
{
        if(!root)
                return 0;
        struct stack *s;
        initStack(s);
        push(s,root);
        struct node *pNode;
        while(!isStackEmpty(s))
        {
                pop(s,pNode);
                printf("%d  ",pNode->data);
                if(pNode->right)        push(s,pNode->right);
                if(pNode->left)         push(s,pNode->left);
        }


}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章