資料結構 二叉樹

2021-08-31 16:50:29 字數 1326 閱讀 6395

二叉樹是資料結構中具有的乙個 很有特色的類別。

二叉樹顧名思義,每個節點最多有兩個子節點,分別叫做左子節點和右子節點。

如果樹的所有層,除了最後一層的節點外都是兩個子節點,那麼稱這個樹為滿二叉樹。

如果樹只有最下面一層沒有排滿,且排好的都在左側,那麼稱這個樹為完全二叉樹。(也就是所有的節點都連續集中在最左邊)

樹作為資料結構中最為基礎的非線性結構,有很多重要的性質:

結點的度:乙個結點的子樹的個數記為該結點的度.

樹的度:所有節點中度數最大的結節的度數,葉子節點的度為零。

樹的高度:一棵樹的最大層次數記為樹的高度(或深度)。

有序(無序)樹:若將樹中結點的各子樹看成是從左到右具有次序的,即不能交換,則稱該樹為有序樹。否則稱為無序樹。

二叉樹第i層(i≥1)上至多有2^(i-1)個節點。

深度為k的二叉樹至多有2^k-1個節點(k≥1)。

對任何一棵二叉,若葉子節點數為n0,度為2的節點數為n2,則n0=n2+1。

具有n個節點的完全二叉樹的深度為 (㏒2^n)(向下取整)+1。

對一棵有n個節點的完全二叉樹的節點按層次從上到下,自左至右進行編號,則對任一節點i(1≤i≤n)有:若 i=1,則節點i是二叉樹的根,無雙親;若 i>1,則其雙親為 i/2(向下取整)。若2i>n,則節點i沒有孩子節點,否則其左孩子為2i。若2i+1>n,則節點i沒有右孩子,否則其右孩子為2i+1。

若深度為k的二叉樹有2^k-1個節點,則稱其為滿二叉樹。滿二叉樹是一棵完全二叉樹。

對於完全二叉樹中,度為1的節點個數只可能為1個或0個。

對於二叉樹,如果葉子節點數為n0,度為1的節點數為n1,度為2的節點數為n2,則節點總數n = n0 + n1 + n2。

對於任意樹,總節點數 = 每個節點度數和 + 1

二叉樹的高度等於根與最遠葉節點(具有最多祖先的節點)之間分支數目。空樹的高度是-1。只有單個元素的二叉樹,其高度為0。

有了二叉樹,就有了關於遍歷的知識。

遍歷是按某種策略訪問樹中的每個節點,且僅訪問一次。

遍歷二叉樹實際上就是將乙個非線性的二維結構給排列呈線性的過程。如果是順序實現了二叉樹的結構,自然底層就是線性的,無需轉化。如果是純鍊錶實現呢,就需要將離散的節點重新組織組織了。

二叉樹的遍歷主要分為兩大類:深度優先遍歷、廣度優先遍歷。

對於深度優先遍歷又分為三種模式:先根遍歷、中根遍歷、後根遍歷。

深度優先遍歷:就是優先訪問樹中最深層次的節點

先根遍歷:先遍歷根節點,之後處理其他子節點

中根遍歷:先遍歷根節點的左子樹,之後遍歷根節點,最後遍歷右子樹

後根遍歷:先遍歷根節點的左子樹,之後遍歷右子樹,最後遍歷根節點

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...

《資料結構》 二叉樹

二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...

資料結構 二叉樹

1.二叉樹 二叉樹是一種特殊結構的樹,每個節點中最多有兩個子節點,如圖1所示 圖1 二叉樹 在圖1中的二叉樹裡,a c有兩個子節點,b d有乙個子節點。對於二叉樹還有圖2中的以下情況 圖2 二叉樹的特殊情況 在博文中還介紹了滿二叉樹和完全二叉樹還有其他的特殊二叉樹。2.二叉樹的實現 有兩種實現方式,...