① 演算法與數據結構二叉樹的順序存儲代碼
1.應該是按照完全二叉樹存的吧。這樣的話,
2。根節點可以設置為1,(如果設成0的行侍老話,以後的所有值-1就可以了)
3,如果一個節點是x它談稿左孩子是2*x,右孩子是2*x+1
4,所有葉子節點是,假設共有K個節點,這樣則最檔升後一個有葉子節點的是k/2,所以葉子節點就是[k/2+1,k];
5,順序輸出就可以了。
② 完全二叉樹的順序存儲
選C。
要簡單的你就畫個圖。要復雜的請見嚴蔚敏老師的《數據結構(c語言版)》124頁倒數第5行到125頁最後一行。
③ 二叉樹的順序存儲結構
二叉樹的順序存儲,指的是使用順序表(數組)存儲二叉樹。需要注意的是,順序存儲只適用於完全二叉樹。換句話說,只有完全二叉樹才可以使用順序表存儲。因此,如果我們想順序存儲普通二叉樹,需要提前將普通二叉樹轉化為完全二叉樹。
2、普通二叉樹轉完全二叉樹的方法很簡單,只需給二叉樹額外添加一些節點,將其"拼湊"成完全二叉樹即可。同樣,存儲由普通二叉樹轉化來的完全二叉樹也是如此。
④ 二叉樹_順序存儲
滿二叉樹 (Full Binary Tree)
所有分支結點都有存在左子樹和右子樹,並且所有葉子結點都在同一層上。
完全二叉樹 (Complete Binary Tree)
如果一棵具有n個結點的二叉樹與滿二叉樹的前n個結點的結構相同,則稱這棵二叉樹為完全二叉樹。
重要性質 :
對於一棵有n個結點的 完全二叉樹 的結點按照從上至下和從左至右的順序對所有結點從零開始到 n-1 進行順序編號,則對於序號為i的結點(0≤i≤n),有:
(1)如果 i=0,則結點i是二叉樹的根;如果i>0,則其 雙親 是結點 (i-1)/2 (整除)。
(2)如果2i+1≥n,則結點i無左孩子;否則,其 左孩子 是結點 2i+1 。
(3)如果2i+2≥n,則結點i無右孩子;否則,其 右孩子 是結點 2i+2 。
根據上面兩點,得到二叉樹順序存儲的實現:
定義:
獲取雙親節點下標:
左子節點下標:
右子節點下標:
主函數測試:
總結:
1、對於完全二叉樹或接近於完全的二叉樹,用順序存儲可以省空間簡化操作;否則,都不適宜用順序存儲。
2、順序存儲結構通病:必須預先給出數組的存儲空間大小MaxSize。
⑤ c語言 二叉樹的數組順序存儲
用數組存的話很簡單
根節點存為a1
比如說當前節點為ai
那麼左兒子存為a2*i
那麼右兒子存為a2*i+1
這樣可以保證每個點都存了並且無重復