大話資料結構C語言 25 什麼是二叉樹?

2021-10-11 22:46:26 字數 1745 閱讀 6054

電視上經常有猜**的的遊戲,比較高效的方法是折半查詢演算法

假設是100以內的數字,則一定能在7次以內猜出來

類似上述的問題,都是用樹結構來建模,這種樹是一種特殊的樹狀結構,叫做二叉樹

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

如下圖就是乙個二叉樹

樹\color

斜樹所有的結點都只有左子樹的二叉樹叫做左斜樹,所有結點都是只有右子樹的而二叉樹叫右斜樹,這兩者統稱為斜樹

左斜樹

右斜樹

滿 二叉

樹\color

滿二叉樹

在乙個二叉樹中,如果所有分支結點都存在左子樹和右子樹,並且所有葉子都在同一層上,這樣的二叉樹稱為滿二叉樹

滿二叉樹的特點有:

1.葉子只能出現在最下一層,出現在其他層就不可能達到平衡

2.非葉子結點的度一定是2

3.在同樣的深度的二叉樹中,滿二叉樹的結點個數最多,葉子數最多

完 全二

叉樹\color

完全二叉

對於一棵具有n個結點的二叉樹按層序編號,如果編號為 i(1<=i<=n)的結點與同樣深度的滿二叉樹中編號為i的結點在二叉樹中位置完全相同,則這顆二叉樹稱為完全二叉樹

滿 二叉

樹一定是

一棵完全

二叉樹,

但是完全

二叉樹不

一定是滿

的\color

滿二叉樹一定

是一棵完

全二叉樹

,但是完

全二叉樹

不一定是

滿的完全二叉樹的特點:

1.葉子結點只能出現在最下兩層

2.最下層的葉子一定集中在左部連續位置

3.倒數二層,若有葉子結點,一定都在右部連續位置

4.如果結點度為1,則該結點只有左孩子,即不存在只有右子樹的情況

5.同樣結點樹的二叉樹,完全二叉樹的深度最小

滿二叉樹中第 i 層的節點數為 2n-1 個。

深度為 k 的滿二叉樹至多有 2k-1 個節點 ,葉子數為 2k-1。

滿二叉樹中不存在度為 1 的節點,每乙個分支點中都兩棵深度相同的子樹,且葉子節點都在最底層。

具有 n 個節點的滿二叉樹的深度為 log2(n+1)。

大話資料結構C語言 23 什麼是樹?

之前的資料結構都是一對一的線性結構,而樹是一對多的資料結構 樹是有n個結點的有限集,n 0時稱為空樹 在任何一棵非空樹中,有且僅有乙個特定的稱為根的結點 當n 1時,其餘結點可分為m個互不相交的有限集,其中每乙個集合本身又是一棵樹,並且稱為根的子樹,如下圖 樹的定義其實就是之前提到的棧的遞迴的方法,...

大話資料結構(二) 演算法

什麼是演算法呢?演算法是描述解決問題的方法。演算法 algorithm 這個單詞最早出現在波斯數學家阿勒 花刺子密在公元 825年 相當於我們中國的唐朝時期 所寫的 印度數字算術 中。如今普遍認可的對演算法的定義是 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示...

資料結構 什麼是資料結構?

緒論 其實,資料結構在計算機科學界至今沒有標準的定義。個人根據各自的理解的不同而有不同的表述方法 資料結構是資料物件,以及存在於該物件的例項合組成例項的資料元素之間的各種聯絡。這些聯絡可以通過定義相關的函式來給出。他將資料物件 data object 定義為 乙個資料物件是例項或值的集合 其實,究竟...