二叉樹基礎

2021-10-03 18:57:33 字數 2537 閱讀 1667

在電腦科學中,二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。

(1) 在非空二叉樹中,第i層的結點總數不超過2i−

12^2i−1

, i>=1;

(2) 深度為h的二叉樹最多有 2

h2^h

2h-1 個結點(h>=1),最少有h個結點;

(3) 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0=n2+1;

(4) 具有n個結點的完全二叉樹的深度為[log⁡2

n\log_2n

log2​n

] + 1 (注:[ ]表示向下取整)

滿二叉樹:對於一棵二叉樹,如果每乙個非葉子節點都存在左右子樹,並且二叉樹中所有的葉子節點都在同一層中,這樣的二叉樹稱為滿二叉樹。

完全二叉樹:對於一棵具有n個節點的二叉樹按照層次編號,同時,左右子樹按照先左後右編號,如果編號為i的節點與同樣深度的滿二叉樹中編號為i的節點在二叉樹中的位置完全相同,則這棵二叉樹稱為完全二叉樹。

構建鏈式儲存結構:

public

class

binarytree

}

對於前序遍歷,首先遍歷根節點,其次遍歷左孩子,再遍歷右孩子,按照如此的順序遍歷整棵樹,其**如下:

/**

* 先序遍歷:根左右

** @param root

*/public

static

void

preorder

(binarytree root)

system.out.

print

(root.val +

",")

;preorder

(root.left)

;preorder

(root.right)

;}

對於中序遍歷,首先遍歷左子樹,其次遍歷父節點,最後遍歷右子樹,按照如此的順序遍歷整棵樹,其**如下:

/**

* 中序遍歷:左根右

** @param root

*/public

static

void

inorder

(binarytree root)

inorder

(root.left)

; system.out.

print

(root.val +

",")

;inorder

(root.right)

;}

對於後序遍歷,首先遍歷左子樹,其次遍歷右子樹,最後遍歷父節點,其**如下:

/**

* 後序遍歷:左右根

** @param root

*/public

static

void

postorder

(binarytree root)

postorder

(root.left)

;postorder

(root.right)

; system.out.

print

(root.val +

",")

;}

對於層次遍歷,需要使用鍊錶儲存每一層的節點,同時,遍歷完乙個節點,將其左右子節點增加近煉表中,其**為:

/**

* 層次遍歷

** @param root

*/public

static

void

levelorder

(binarytree root)

linkedlist

queue =

newlinkedlist

<

>()

; queue.

offer

(root)

;while

(!queue.

isempty()

)if(node.right != null)

}}

最終遍歷結果:

先序遍歷

1,2,4,5,3,6,7,

中序遍歷

4,2,5,1,6,3,7,

後序遍歷

4,5,2,6,7,3,1,

層次遍歷

1,2,3,4,5,6,7,

二叉樹基礎

二叉樹 二叉樹是一棵特殊的樹,二叉樹每個節點最多有兩個孩子結點,分別稱為左孩子和右孩子。二叉樹節點結構 二叉樹的建立 node createtree const t a,size t size,size t index,const t invilid return root 返回根節點 前序遍歷 前...

二叉樹基礎

最近學習的一些筆記,記錄一下 樹是一種非線性結構,樹 這種資料結構真的很像我們現實生活中的 樹 這裡面每個元素我們叫 節點 例如下面這幅圖,a 節點就是 b 節點的父節點,b 節點是 a 節點的子節點。b c d 這三個節點的父節點是同乙個節點,所以它們之間互稱為兄弟節點。我們把沒有父節點的節點叫作...

二叉樹基礎

1.二叉樹的定義 每個結點最多只有兩棵子樹 子樹左右有順序之分 2.常見的二叉樹型別 滿二叉樹 看起來 完美 而又 平衡 的樹 完全二叉樹 首先從上至下,從左至右按順序給結點編號,再從下至上,從右至左按順序刪除結點。由此可見滿二叉樹是一棵特殊的完全二叉樹,而完全二叉樹是 缺胳膊少腿 的滿二叉樹。3....