當前位置:首頁 » 服務存儲 » 已知一顆二叉樹按順序方式存儲在數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

已知一顆二叉樹按順序方式存儲在數組

發布時間: 2023-03-24 21:58:15

⑴ 什麼是二叉樹的順序存儲

二叉樹的順序存儲結構,此結構是將二叉樹的所有結點,按照一定的次序,存儲到一片連續的存儲單元中。因此,必須將結點排成一個適當的線性序列,使得結點在這個序列中的相應位置能反映出結點之間的邏輯關系。這種結構特別適用於近似滿二叉樹。
在一棵具有n個結點的近似滿二叉樹中,我們從樹根起,自上層到下層,逐層從左到右給所有結點編號,就能得到一個足以反映整個二叉樹結構的線性序列,如圖6所示。其中每個結點的編號就作為結點。
樓主看看下面的圖

希望對你有所幫助喲,好的話記得採納喲!

c語言 二叉樹的數組順序存儲

用數組存的話很簡單
根節點存為a1
比如說當前節點為ai
那麼左兒子存為a2*i
那麼右兒子存為a2*i+1
這樣可以保證每個點都存了並且無重復

⑶ 設計一個演算法將一棵二叉鏈表存儲的二叉樹按順序存儲到數組中

思路很簡單,根放在0位置,以後假定當前位置是i,那麼左子結點在2i+1,右子結點在2i+2。比如根的左子結點在1,右子結點在2。結點1的左子結點在3,右子結點在4。定義一種空值表示沒有子結點,比如empty。
假定一個結點由3個成員組成:value, left, right
數組假定是全局的,如果不是可以作為參數傳送。
遞歸實現比較簡單:
void btree2array(node, index)
{
if(node == NULL)
array[index] = empty;
array[index] = node->value;
btree2array(node->left, index * 2 + 1);
btree2array(node->right, index * 2 + 2);
}

開始調用的時候就一句話:
btree2array(root, 0);