二叉樹的生成和遍歷

2022-09-08 00:45:24 字數 1277 閱讀 7259

二叉樹是一種樹狀結構的圖。它由一系列節點和邊組成。

每個節點的位元組點數不超過2個,只有乙個根結點。

基礎名詞解釋

度: 每個節點的字節點的個數。如圖:每個節點的度都是2。如果某個節點有乙個字節點,那麼它的度是1。

根節點: 一棵樹最上面的節點;一棵樹只有乙個根節點。

葉子節點: 沒有字節點的節點。圖中最下面的8個節點都是葉子節點。

高度: 樹的層數。圖中樹的高度是3。

深度: 節點所處的深度;葉子節點的深度等於樹的高度;根結點是深度0, 依次類推,字節點是深度1...

內部節點: 除了葉子節點以外的節點。圖中除了最下面的8個葉子節點之外的7個節點都是內部節點。包含根結點。

樹的分類

滿二叉樹: 滿二叉樹要求高度為h的二叉樹總節點數為2**(n+1)-1的。上面的示意圖是個滿二叉樹。

完全二叉樹: 完全二叉樹只要求從1-n的節點排布同滿二叉樹。

二叉查詢樹: 對於所有的節點來說,當前節點的左子樹的所有節點的值比當前節點的值要小;

所有右子樹的值比當前節點的值要大。下圖是個查詢二叉樹。

二叉查詢樹遍歷方式

中序遍歷: 即按照資料公升序遍歷。按照左子節點,父結點,右子節點的順序遍歷。

然後對於根節點來說,左右子節點本身又是個二叉查詢樹,需要遞迴呼叫,直到葉子節點為止。

葉子節點相當於左右子節點都是null的節點。

先序遍歷:按照根結點,左子樹,右子樹的順序遍歷。

後序遍歷:按照左子樹,右子樹,根結點的順序遍歷。

使用**實現如下:

執行結果如下:

//

執行結果如下:

inorder-->[10, 20, 25, 28, 30, 35, 45, 56, 68, 78, 80, 88, 89]

preorder-->[56, 28, 20, 10, 25, 35, 30, 45, 78, 68, 88, 80, 89]

postorder-->[10, 25, 20, 30, 45, 35, 28, 68, 80, 89, 88, 78, 56]

二叉樹的遍歷和線索二叉樹

二叉樹的遍歷,所謂二叉樹的遍歷,是指按某條搜尋路徑訪問樹中的每個結點,使得每個結點均被訪問一次,而且僅被訪問一次。由二叉樹的遞迴定義可知,遍歷一棵二叉樹便要決定對根結點n,左子樹l和右子樹r的訪問順序。按照先遍歷再遍歷右子樹的原則,常見的遍歷次序有先,中,後三種遍歷方法,其中序指的是根結點再何時被訪...

二叉樹的遍歷和線索二叉樹

1 遍歷二叉樹 以一定的規則將二叉樹的結點排列成乙個線性序列。2 線索二叉樹 實質就是遍歷一次二叉樹,從而充分利用傳統二叉鍊錶中的空指標,不浪費儲存空間。目的在於利用線索二叉樹可以加快查詢結點的前驅和後繼的速度。3 先序和中序 後序和中序 層序和中序 可以確定唯 一 一 顆二叉樹。只知道先序和後序,...

二叉樹的遍歷和線索二叉樹

void preorder bitree t void inorder bitree t void postorder bitree t void preordertr erse bitree t else void inordertr erse bitree t else 後序非遞迴遍歷二叉樹的順...