心中永遠有一顆二叉樹

2021-10-07 07:41:40 字數 1704 閱讀 8697

目錄

二叉樹二叉樹的特點

特殊二叉樹 斜樹

滿二叉樹

完全二叉樹

完全二叉樹的性質

二叉樹測性質

定義:二叉樹(binary tree)是n(n>=0)個結點的有限集合,該集合或者為空集(稱空二叉樹),或者由乙個結點互不相交的,分別稱為根結點的左子樹和右子樹的二叉樹組成。

每個節點最多有兩個結點,也就是說可能有0,1,2個結點。

左子樹和右子樹是有區別的,就算沒有左子樹,右子樹也是在右邊。如下圖兩顆二叉樹事不一樣的樹。

所有結點之後左子樹或者右子樹的叫斜樹,往左邊斜的叫左斜樹,右邊斜的叫右斜樹。

滿二叉樹就是二叉樹所有的根結點左右子樹都滿了,並且所有的葉子結點都在同一層上。

完全二叉樹就是樹不要求滿,但是要求完全,也就是說,從根結點開始一層一層向下,從左到右,直到最後乙個葉子結點的結點不能有空缺。就「完全」了。如下圖兩棵樹就不是完全二叉樹。

判定方法就是從上至下一層一層從左到右按照滿二叉樹編號,如果編號的樹去對應目標樹的結點中間結點出現空缺。則不滿足完全二叉樹。如上圖樹1的10和樹2的6和7。

葉子節點只能出現在最下兩層。

最下一層的葉子結點一定是靠最左邊,

倒數第二層的葉子結點是在樹的最右部分。

如果二叉樹只有乙個孩子,那一定是左孩子。

同樣結點個數的二叉樹,完全二叉樹是深度最小。

1.在二叉樹的第i層至多有2^(i-1)個結點,i>=1。

由數學歸納法,第一層1個,第二層2個,第三層4個可知二叉樹的第i層至多有2i-1個結點。

2.深度為k的二叉樹總的最多有(2^k) - 1個結點。

深度為1有總的1個,深度為2有總的3個,深度為3有總的7個,深度為k的二叉樹總的最多有(2^k) - 1個結點。

3.重點,在二叉樹中,葉子結點的個數比度為2的所有根結點多乙個。

如圖,設圖結點數為n,設葉子結點為n0,度為1的結點為n1,度為2的結點數為n2。則n=n0+n1+n2。我們再看連線,度為2的連線有2*n2條,度為1的連線有n1條,總的連線就是n1+2*n2條。我們知道結點數減去1等於連線數,故有n-1=n1+2*n2條。上訴存在n=n0+n1+n2。所以得出n0 = n2 +1。

4.二叉樹性質4

5.二叉樹性質

程式設計練習之一顆二叉樹包含另一顆二叉樹

劍指offer上的一道程式設計練習,如何確定二叉樹a包含一棵相對小一點的二叉樹b?思路 用兩個函式實現,第乙個首先判斷根結點是否相等,第二個函式繼續判斷子結構是否相等 函式一 第一步,首先從根結點入手,判斷proota的值是否與prootb的根結點的值是否相等。若相等,則在比較a樹的子結構是否包含b...

判斷一顆二叉樹是否是平衡二叉樹

方法一,參考 template typename t intdepthtree bstreenode pbs template typename t bool isbalancetree bstreenode pbs intdepthleft depthtree pbs left intdepthr...

判斷一顆二叉樹是否為對稱二叉樹

本題源自劍指offer 可以自定以一種對稱前序遍歷,即先遍歷父節點,再訪問右子節點,在訪問左子節點,null節點也訪問,將得到的序列和前序遍歷比較,相同就說明二叉樹是對稱的。遞迴 bool issymmetrical treenode proot bool issymmetricalcore tre...