二叉樹遞迴定義 :
1) 空節點(null)為二叉樹
2)二叉樹的左子樹為二叉樹,二叉樹的右子樹為二叉樹。
二叉樹的前序遍歷遞迴定義 :
1) 當前節點為空(null)直接返回
2) 對於非空節點
i) 操作當前節點
ii) 前序遍歷左子樹
iii) 前序遍歷右子樹
二叉樹的非遞迴遍歷方法 :
使用棧來進行遍歷。
策略簡述 :
利用棧和迴圈,每次迴圈的輸入變數node都必須為當前要遍歷的樹的根節點。也就是將迴圈當作遞迴函式使用。
例如當前輸入node = root,那麼對於當前層面來說,下一次 node = root.left。當左子樹前序遍歷結束後,必定要是 node = root.right。
那麼如何實現上述例子呢?
1class
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...