完全二叉樹為什麼最適合順序儲存結構

2023-06-22 17:55:12 字數 3485 閱讀 4545

1樓:愛聊生活工具人

理由如下:

一般情況下,如果將樹的結點從上到下,每一層從左到右從1開始挨個編號,那麼結點 i 的左孩子就是2i,右孩子就是2i+1,將這個規律反映到順序儲存中。

我們可以根據陣列的下標i也能找到左孩子(2i)和右孩子(2i+1),前提是陣列下標 i=0位丟棄不用,從i=1開始儲存樹的編號為1的根結點,以此類推。

所以,這樣即使是將一棵樹順序儲存到了乙個一維陣列中,結點 i 的左孩子就是2i,右孩子就是2i+1這套公式照樣能夠使用。

假設現在一棵非完全二叉樹,拿一棵普通的二叉樹舉例,一棵普通二叉樹有5種形態(空樹、只有根結點、只有左子樹、只有右子樹、左右子樹都有),從形態上來看是一棵「殘缺不全」的二叉樹。

如果從根結點開始從1 挨個編號,然後在存進一維陣列中,那麼有些結點可能沒有孩子,那麼它原本的孩子在陣列中的位置就會被後面上來的的結點佔據,這樣在陣列中再拿著2i或者2i+1找到的結點就不是實際情況下樹中結點的左右孩子(實際情況下樹中該結點可能甚至都沒有孩子)。

因此,之所以說順序儲存只適用於完全二叉樹,就是為了保證在一維陣列中仍舊能夠根據2i和2i+1去找左右孩子。

完全二叉樹的特點:葉子結點只能出現在最下層和次下層,且最下層的葉子結點集中在樹的左部。需要注意的是,滿二叉樹肯定是完全二叉樹,而完全二叉樹不一定是滿二叉樹。

性質。1、具有n個結點的完全二叉樹的深度。

注:[ 表示向下取整)

2、如果對一棵有n個結點的完全二叉樹的結點按層序編號, 則對任一結點i (1≤i≤n) 有:

如果i=1, 則結點i是二叉樹的根, 無雙親;如果i>1, 則其雙親parent (i) 是結點[i/2]。

如果2i>n, 則結點i無左孩子, 否則其左孩子lchild (i) 是結點2i。

如果2i+1>n, 則結點i無右孩子, 否則其右孩子rchild (i) 是結點2i+1。

完全二叉樹的儲存結構通常採用順序儲存結構()

2樓:小小綠芽聊教育

正確。一棵深度為k的有n個結點的二叉樹,對樹中的結點按從上至下、從左到右的順序進行編號,如果編號為i(1≤i≤n)的結點與滿二叉樹中編號為i的結點在二叉樹中的位置相同,則這棵二叉樹稱為完全二叉樹。

如果對滿二叉樹的結點進行編號, 約定編號從根結點起, 自上而下, 自左而右。則深度為k的, 有n個結點的二叉樹, 當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時, 稱之為完全二叉樹。

二叉排序樹怎麼構造

3樓:旅遊達人在此

假設二叉排序樹t為空,則建立乙個keyword為k的結點。將其作為根結點。

否則將k和根結點的keyword進行比較,假設相等則返回,假設k小於根結點的keyword則插入根結點的左子樹中,否則插入根結點的右子樹中。

int insertbst(bstnode *p, keytype k)

else if(k==p->key)

return 0;

else if(kkey)

return insertbst(p->lchild, k);

elsereturn insertbst(p->rchild, k);

二叉排序樹的生成演算法:

4樓:水瓶教育研究所

二叉排序樹本身是動態查詢表的一種表示形式,有時會在查詢過程中插入或者刪除表中元素,當因為查詢失敗而需要插入資料元素時,該資料元素的插入位置一定位於二叉排序樹的葉子結點,並且一定是查詢失敗時訪問的最後乙個結點的左孩子或者右孩子。

樹 - 二叉樹 - 二叉樹的儲存結構(二)

5樓:華源網路

鏈式儲存結構。

結點的結構。

二叉樹的每個結點最多有兩個孩子 用鏈結方式儲存二叉樹時 每個結點除了儲存結點本身的資料外 還應設定兩個指標域。

lchild和rchild 分別指向該結點的左孩子和右孩子 結點的結構為。

結點的型別說明。

typedef char datatype; /使用者可根據具體應用定義datatype的實際型別。

typedef struct nodebintnode; /結點型別。

typedef bintnode *bintree;//bintree為指向bintnode型別結點的指標型別。

二叉鍊錶(二叉樹的常用鏈式儲存結構)

在一棵二叉樹中 所有型別為bintnode的結點 再加上乙個指向開始結點(即根結點)的bintree型頭指標(即根指標)root 就構。

成了二叉樹的鏈式儲存結構 並將其稱為二叉鍊錶。

例】下面左圖所示二叉樹的二叉鍊錶如下面中圖所示。

注意 ① 乙個二叉鍊錶由根指標root惟一確定 若二叉樹為空 則root=null;若結點的某個孩子不存在 則相應的指標為空。

具有n個結點的二叉鍊錶中 共有 n個指標域 其中只有n 個用來指示結點的左 右孩子 其餘的n+ 個指標域為空。

帶雙親指標的二叉鍊錶。

經常要在二叉樹中尋找某結點的雙親時 可在每個結點上再加乙個指向其雙親的指標parent 形成乙個帶雙親指標的二叉鍊錶。

例】上面右圖是上面左圖所示的二叉樹的帶雙親指標的二叉鍊錶。

注意 二叉樹儲存方法的選擇 主要依賴於所要實施的各種運算的頻度。

lishixinzhi/article/program/sjjg/201311/23885

已知完全二叉樹的N個結點,該二叉樹有多少個葉子結點

設完全二叉數有n個結點 從根結點開始按每一層從左到右的順序,用自然數 1,2,3,n給結點進行版編號.設編號為 權k,即k 1,2,3,n然後有以下3種情況 1 k 1該結點為根結點,它沒有父結點.k 1,該結點父結點編號為int k 2 2 2k n,左結點為2k.3 2k 1 n,右結點為2k ...

二叉樹與數有什麼區別二叉樹和樹的區別到底是什麼,例如用三個結點畫出二叉樹和樹的不同結構圖,謝謝!!!

1.二叉樹的基本形態 二叉樹也是遞迴定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 a 2 只有乙個根結點的二叉樹 b 3 右子樹為空的二叉樹 c 4 左子樹為空的二叉樹 d 5 完全二叉樹 e 注意 儘管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形。2.兩個重要的概念...

線索二叉樹是一種什麼結構線索二叉樹是一種結構?

物理結構。包括線性儲存和非線性儲存其中,線性儲存結構有順序 鏈結 索引和雜湊4種結構。非線性儲存結構有 樹形儲存結構 圖形儲存結構。n個結點的二叉鍊錶中含有n 1 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向結點在某種遍歷次序下的前驅和後繼結點的指標。這種加上了線索的二叉鍊錶...