前序遍歷最簡單,無腦入棧無腦出棧,出棧的時候先入右再入左即可。
class
solution
stack.
push
(root)
;while
(stack.
size()
!=0)if
(temp.left != null)
}return res;
}}
中序遍歷比較特殊,要有乙個前驅指標p來一直向左試探,所以條件上多了一項p != null,一直試探到
class
solution
linkedlist
stack =
newlinkedlist
<
>()
; treenode p = root;
while
(p != null || stack.
size()
!=0)else
}return list;
}}
純粹的後序遍歷有點難,比較難記住。這裡利用前序的思想寫乙個,對其稍作修改,每次新增都放到0下標,先入左**右。
class
solution
linkedlist
stack =
newlinkedlist
<
>()
; stack.
push
(root)
;while
(stack.
size()
!=0)if
(tmp.right != null)
}return res;
}}
非遞迴前,中,後序遍歷二叉樹
相比遞迴遍歷二叉樹,非遞迴遍歷二叉樹稍難一些,而又數非遞迴後序遍歷二叉樹更難。在我通過與這段時間所學資料結構相結合,學習和了解了非遞迴遍歷二叉樹的方法,這裡三種遍歷方式都會用到棧,利用棧的逐層壓棧與先進後出的特點,類似於用 實現了遞迴遍歷二叉樹的基本方法。非遞迴二叉樹的遍歷個人認為注重的是思想,實現...
二叉樹的前中後序遍歷(遞迴 非遞迴)
二叉樹節點類 author wj class treenode 二叉樹類 author wj class binarytree private void add node to tree int value 建立二叉樹 treenode currentnode treenode while true...
二叉樹的前 中 後序遍歷(遞迴與非遞迴)
常見的二叉樹的遍歷有三種方式 前序遍歷 根節點,左子樹,右子樹 中序遍歷 左子樹,根節點,右子樹 後序遍歷 左子樹,右子樹,根節點 每種方式都可以用遞迴和非遞迴來實現 一 遞迴遍歷 1.先序遍歷 先訪問根節點,再訪問左子樹,左子樹訪問完之後,訪問右子樹 void btreeprevorder btn...