二叉樹的後序遍歷

2021-10-17 11:20:55 字數 1266 閱讀 5226

二、迭代法

總結二叉樹的後序遍歷

根據左子樹、右子樹、根節點的順序遞迴呼叫自己。遞迴終止條件是節點為空

**如下:

/**

* definition for a binary tree node.

* public class treenode

* treenode(int val)

* treenode(int val, treenode left, treenode right)

* }*/class

solution

return res;

}}

用棧來實現與遞迴類似的作用。

注意:後序遍歷和前序遍歷有聯絡。前序遍歷為根、左、右的訪問方式,首先將**變換一下變成根、右、左的遍歷規則,隨後,對得到的結果進行翻轉即獲得左、右、中的結果,該結果就是後序遍歷的結果。

1、建立乙個棧物件;

2、首先將根節點入棧;

3、開啟迴圈,迴圈進行的條件為棧非空;

4、進行出棧操作;

5、對拿出來的棧頂節點的val值進行儲存;

6、先判斷當前節點的左節點是否存在,存在則該左節點入棧;

7、再判斷當前節點的右節點是否存在,存在則該右節點入棧;

8、迴圈結束;

9、對儲存的結果進行翻轉操作。

**如下:

/**

* definition for a binary tree node.

* public class treenode

* treenode(int val)

* treenode(int val, treenode left, treenode right)

* }*/class

solution

//迭代法,遍歷規則為:先左節點,再右節點,最後根節點

stack

stack =

newstack

<

>()

; stack.

push

(root)

;while

(!stack.

isempty()

)if(node.right != null)

} collections.

reverse

(res)

;return res;

}}

暫時沒有總結,待續。。。

二叉樹的後序遍歷

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

二叉樹的後序遍歷

節點和樹類 public class treenode public treenode integer val override public string tostring public class tree 遞迴實現 public arraylistafter treenode node aft...

二叉樹的後序遍歷

如下圖表示一顆二叉樹,對它進行先序遍歷操作,採用兩種方法,遞迴和非遞迴操作。遍歷結果為 4526731。1 遞迴操作 思想 若二叉樹為空,返回。否則 1 後序遍歷右子樹 2 後序遍歷左子樹 3 遍歷根節點 void postorder bitree root 2 非遞迴操作 void postord...