二叉樹的幾種類型


本文基於鄧俊輝編著的《數據結構(C++語言版)(第3版)》和網上博文,僅介紹完全二叉樹、滿二叉樹,平衡二叉樹的相關概念。

 

一、二叉樹

1、二叉樹的概念

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree),其次序不能任意顛倒。(百度百科

2、性質

(1)若二叉樹的層次從0開始,則在二叉樹的第i層至多有2^i個結點(i>=0);

(2)高度為k的二叉樹最多有2^(k+1) - 1個結點(k>=-1)。 (空樹的高度為-1);

(3)對任何一棵二叉樹,如果其葉子結點(度為0)數為m, 度為2的結點數為n, 則m = n + 1。

二、幾種特殊的二叉樹

1、滿二叉樹

所有葉結點同處於最底層(非底層結點均是內部結點),一個深度為k(>=-1)且有2^(k+1) - 1個結點。如圖(圖來源於veil的博客):

 

2、完全二叉樹

葉結點只能出現在最底層的兩層,且最底層葉結點均處於次底層葉結點的左側。規模為n的完全二叉樹,高度為

 

3、平衡二叉樹

 平衡二叉樹(Self-balancing binary search tree)又被稱為AVL樹(有別於AVL算法),且具有以下性質:它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。平衡二叉樹的常用實現方法有紅黑樹AVL替罪羊樹Treap伸展樹等。 最小二叉平衡樹的節點的公式如下 F(n)=F(n-1)+F(n-2)+1 這個類似於一個遞歸的數列,可以參考Fibonacci(斐波那契)數列,1是根節點,F(n-1)是左子樹的節點數量,F(n-2)是右子樹的節點數量。(百度百科)

對於平衡二叉樹要特別注意的是,不要求非葉節點都有兩個子結點,僅要求兩個子樹的高度差的絕對值不超過1,或者為空樹。

三、存儲方式

存儲的方式和圖一樣,有鏈表和數組兩種,用數組存訪問速度快,但插入、刪除節點操作就比較費時了。實際中更多的是用鏈來表示二叉樹的。

 

Ref:

http://www.cnblogs.com/idorax/p/6441043.html#top

http://blog.csdn.net/ysu108/article/details/7687728


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM