java 資料結構 二叉樹遍歷

2021-07-14 04:56:33 字數 1574 閱讀 3565

前言:

前序,中序和後序遍歷都是深度優先遍歷的特例

深度優先和廣度優先是針對普通樹的,

但是先序,中序和後序都是針對二叉樹的。

使用遞迴和迭代(借用棧)實現二叉樹先序,中序,後序遍歷

/**

* definition for a binary tree node.

* public class treenode

* }*/

1.二叉樹先序遍歷

1.1遞迴

public class solution 

return

list;

}}

1.2迭代
/*

維護乙個棧,將根節點入棧,然後只要棧不為空,出棧並訪問,

接著依次將訪問節點的右節點、左節點入棧。

類似於圖的深度優先遍歷dfs

但是這種方式 沒有良好的擴充套件性,在中序和後序方法中不適用

*/public class solution

stack

.push(root);

while(!

stack

.isempty())

if(node.left !=

null)

}return

list;

}}

1.3迭代-2
/*

利用棧模擬遞迴過程實現先序遍歷二叉樹

左子樹點不斷的壓入棧,直到null,然後處理棧頂節點的右子樹

但是這種方式有良好的擴充套件性

*/public class solution

root =

stack

.pop();

root = root.right;

}return

list;

}}

2.二叉樹中序遍歷

2.1遞迴

public class solution 

return

list;

}}

2.2迭代
/*

利用棧模擬遞迴過程實現先序遍歷二叉樹

左子樹點不斷的壓入棧,且入棧後訪問,相當於模擬遞迴的先訪問左子樹,才是根節點,直到null,然後處理棧頂節點的右子樹

但是這種方式有良好的擴充套件性

*/public class solution

root =

stack

.pop();

list

.add(root.val);

root = root.right;

}return

list;

}}

3.二叉樹後序遍歷

3.1遞迴

public class solution 

return

list;

}}

3.2迭代
/*後序遍歷不同於先序和中序,需要先處理完左右子樹,才處理根節點,

所以需要乙個map來記錄那些節點已經被訪問*/

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...

資料結構 遍歷二叉樹

二叉樹的遍歷原理 二叉樹的遍歷是指從根節點出發,按照某種次序以此訪問二叉樹所有節點,使得每個節點被訪問一次且僅被訪問一次 二叉樹遍歷方法 1.前序遍歷 規則是若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹 2.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...