二叉樹的迭代後序遍歷

2021-07-12 01:37:07 字數 488 閱讀 6661

一:

1.將左結點入棧,直至左結點為空

2.判斷右結點

(1)若右結點不為空且右結點未被訪問過,則將右結點按照和左結點相同的規則入棧

(2)若右結點為空或已被訪問過,則將當前結點輸出,出棧並進行標記

**從分支再次進入迴圈,若從(1)進入,則繼續入棧;若從(2)進入,則跳過入棧階段,將當前棧頂置為當前結點

void iteratorprint(treenode *root)

} else

break;

}}

二:利用兩個棧

1.第乙個棧按照根入,左入,右入的順序入棧

2.第乙個棧按照根出,右出,左出的順序出棧,即第二個棧按照根入,右入,左入的順序入棧

void iter_print(treenode *root)

while(top2>-1)

}

二叉樹的後序遍歷 迭代

使用兩個棧來協助完成二叉樹的遍歷操作。不難發現,如果我們以 根 右 左 的順序遍歷二叉樹,將結果壓進棧中,彈棧的時候順序就是 左 右 根 也就是後序遍歷的結果了。而 根 右 左 的遍歷順序和先序遍歷很像 先序遍歷是 根 左 右 用stack1協助,對每個結點依次將 根 右 左 的順序入棧,最後將遍歷...

二叉樹後序遍歷的迭代實現

include include struct bintreenode 以下 用於建樹,便於測試中序遍歷程式是否正確 struct bintreenode createnode int data return temp struct bintreenode findnode struct bintre...

二叉樹的後序遍歷

1 問題描述 給出一棵二叉樹,返回其節點值的後序遍歷。給出一棵二叉樹 1 2 3返回 3,2,1 2 問題實現 與前序遍歷 中序遍歷類似。若二叉樹為空,則空操作返回。否則後序遍歷根節點的左子樹,後序遍歷根節點的右子樹,訪問根節點。3 definition of treenode class tree...