二叉樹遍歷思想 一 前序遍歷

2021-10-02 16:44:35 字數 710 閱讀 1016

二叉樹遞迴定義 : 

1) 空節點(null)為二叉樹

2)二叉樹的左子樹為二叉樹,二叉樹的右子樹為二叉樹。

二叉樹的前序遍歷遞迴定義 : 

1) 當前節點為空(null)直接返回

2) 對於非空節點

i)   操作當前節點

ii)  前序遍歷左子樹

iii) 前序遍歷右子樹

二叉樹的非遞迴遍歷方法 : 

使用棧來進行遍歷。

策略簡述 : 

利用棧和迴圈,每次迴圈的輸入變數node都必須為當前要遍歷的樹的根節點。也就是將迴圈當作遞迴函式使用。

例如當前輸入node = root,那麼對於當前層面來說,下一次 node = root.left。當左子樹前序遍歷結束後,必定要是 node = root.right。

那麼如何實現上述例子呢?

1

class

solution else

13 }return

res;14}

15 }

**解釋 :

第五行是邊界條件 : 什麼時候結束遍歷? 當當前節點為空節點且棧也為null時。

迴圈的輸入引數 : root, stack。

什麼時候左子樹遍歷完畢,要遍歷上一層的樹根節點的右子樹? 當當前節點指標為空的時候。也就意味著左子樹遍歷完畢了。

前序遍歷二叉樹

題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...

二叉樹的前序遍歷

二叉樹的前序遍歷 public class tree 建立二叉樹,返回根結點 param return public static tree createtree int else else else else return root 前序遍歷 param tree public static vo...

二叉樹的前序遍歷

1.問題描述 給出一棵二叉樹,返回其節點值的前序遍歷。樣例給出一棵二叉樹,1 2 3返回 1,2,3 2.解題思路 運用遞迴的思想,按先根在左子樹最後右子樹的思想將節點存到vector中。3.實現 definition of treenode class treenode class solutio...