二叉樹的後序遍歷 迭代

2022-05-03 11:27:27 字數 495 閱讀 3787

使用兩個棧來協助完成二叉樹的遍歷操作。

不難發現,如果我們以「根->右->左」的順序遍歷二叉樹,將結果壓進棧中,彈棧的時候順序就是「左->右->根」,也就是後序遍歷的結果了。

而「根->右->左」的遍歷順序和先序遍歷很像(先序遍歷是「根->左->右」)

用stack1協助,對每個結點依次將「根->右->左」的順序入棧,最後將遍歷結果儲存到stack2中

依次彈出stack2中的元素即為二叉樹的後序遍歷結果

class

solution

if (x->right !=null)

}//前序遍歷出棧之後就是後序遍歷的結果

while (!stack2.empty())

return

res;}};

二叉樹的迭代後序遍歷

一 1.將左結點入棧,直至左結點為空 2.判斷右結點 1 若右結點不為空且右結點未被訪問過,則將右結點按照和左結點相同的規則入棧 2 若右結點為空或已被訪問過,則將當前結點輸出,出棧並進行標記 從分支再次進入迴圈,若從 1 進入,則繼續入棧 若從 2 進入,則跳過入棧階段,將當前棧頂置為當前結點 v...

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

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...