熟悉樹結構 二叉樹

2021-10-05 15:27:34 字數 1893 閱讀 2130

2.二叉樹的性質

3.二叉樹的儲存結構

二叉樹是一種典型的樹形結構

二叉樹的特點是每個結點至多有兩棵子樹,即二叉樹的度

是2,並且二叉樹的子樹有左右之分,不可任意顛倒次序

結點個數為0的二叉樹

一棵深度為k,且有2^k - 1個結點的二叉樹,稱為滿二叉樹。

特點是每一層上的結點數都是最大結點數。

在一棵二叉樹中,除最後一層外,若其餘層都是滿的,並且或者最後一層是滿的,或者是在右邊缺少連續若干結點,則此二叉樹為完全二叉樹。

a:滿二叉樹/完全二叉樹

b:完全二叉樹

c&d:非完全二叉樹

空二叉樹

只有根結點

根結點只有左子樹

根結點只有右子樹

根結點既有左子樹又有右子樹

由上面的基本形態易得,每個二叉樹必然包含3部分

資料部分

左子樹指標

右子樹指標

//二叉樹結點定義

template

<

typename datatype>

class

bitnode

//構建指定資料域的結點

bitnode

(datatype newdata)

private

: datatype data;

//資料域

bitnode *lchild;

//左子樹指標

bitnode *rchild;

//右子樹指標

};

具有n個結點的非空二叉樹有且僅有n-1個分支

非空二叉樹的第i層最多有2^(i-1)個結點

深度為k的二叉樹最多有2^k - 1個結點

在任意非空二叉樹中,若葉子結點的數目為n_0,度為2的結點數目為n_2,則n_0=n_2+1成立

具有n(n>0)個結點的完全二叉樹的深度為k=n/2(向下取整)

結點i的定義:

若對具有n個結點的完全二叉樹的所有結點按層從上到下,每層從左到右的次序依次對結點從1開始編號 那麼結點i有如下性質

i=1時,i為二叉樹的根結點

i>1時,i的父親結點為i/2(向下取整)

若2i<=n,則i的左兒子的編號為2i

若2i>n,則i沒有左兒子

若2i+1<=n,則i的右兒子的編號為2i+1

若2i+1>n,則i沒有右兒子

使用一塊連續的儲存空間儲存二叉樹

優點:結構緊湊,沒有額外的指標空間,隨機訪問能力強

缺點:插入和刪除元素時操作費時,所需空間大時,容易崩潰,不利於對碎片空間的利用

由完全二叉樹結點性質可得出結點的序號關係:

編號為i的結點的左兒子的編號為2i(如果存在左結點的話)

編號為i的結點的右兒子的編號為2i+1(如果存在右結點的話)

而非完全二叉樹也可以使用上面的規則編號,就是會有許多編號無人認領,造成浪費

//二叉樹線性表示

template

<

typename datatype>

class

seqbt}~

seqbt()

};

二叉樹是一種非線性的結構

使用鏈式結構能夠很直觀地表示二叉樹的邏輯結構

並且即使二叉樹是非二叉樹的時候 仍舊能夠很好的表示,不會像順序結構產生空結點

優點:能夠很好的利用記憶體中的碎片空間,提高記憶體空間的利用效率

缺點:不能隨機訪問某個結點,需要進行遍歷,耗時

//二叉樹鏈式表示

template

<

typename datatype>

class

bintree

};

樹結構 二叉樹

二叉樹 如果書中的每個節點最多只有兩個子節點,這樣的樹就叫做二叉樹 1.二叉樹的重要特性 二叉樹第 i 層的最大節點數為 2 i 1 i 1 深度為 k 的二叉樹最大節點總數為 2 k 1 對於任何乙個非空二叉樹t,若n0表示葉節點的個數,n2為度為2的非空葉節點個數,那麼兩者滿足 n0 n2 1 ...

資料結構 樹結構 二叉樹 完全二叉樹 滿二叉樹

樹結構是一種描述非線性層次關係的資料結構。除根結點外,其餘每個結點有且僅有乙個直接前驅。每個結點可以有任意多個直接後繼。英文名詞表示 tree,root,node,leaf,edge,child,subtree 要麼二叉樹沒有根結點,是一棵空樹。要麼二叉樹由根結點,左子樹,右子樹組成,且左子樹和右子...

7 樹結構和二叉樹

6.樹結構和二叉樹 樹結構中每個元素最多只有乙個前驅,但可能有多個後繼,體現出明顯的層次關係。6.1樹的相關概念 6.2樹的儲存結構與遍歷 6.3二叉樹 樹的基本概念 需要注意的是葉子節點的高度為0,如果樹只有乙個節點,那麼這個節點的高也是0 需要注意的是根節點的深度 depth 是0.從heigh...