樹儲存方式的分析 純理論

2021-10-20 01:13:21 字數 1395 閱讀 1082

假設有一顆樹如下

由於樹的父結點和子結點是有聯絡的,但是兄弟結點雖然有同乙個父結點單本身是沒有關係的。所有如何將這些資料存放在順序表中,只能利用結點之間的關係進行儲存.按照分析有三類關係

所以綜上樹的儲存最好使用鏈式儲存,

孩子表示法是利用了順便表加上鏈式結構的一種儲存方式,首先將所有結點放在順序表中,然後遍歷該順序表如果該節點有子結點則將該子結點鏈結到其後反之則置空。如下圖所示

在結構體中將結點分為三個部分:長子指標+結點資料+兄弟指標

結點的長子:在樹中將最左邊的結點稱為長子

綜上特點對於孩子兄弟表示法:可以將長子當作是左孩子,以第乙個兄弟關係為起點其後向右傾斜-------->二叉樹

二叉樹的概念以及樹和森林轉換成二叉樹這裡不做詳細說明,搜尋一下就會明白淺顯的概念。這裡注意去介紹一下二叉樹的性質以及一些特點

性質1:在二叉樹的第i曾最多有2^i-1個結點

性質2:深度為k的二叉樹至多有2^k-1個結點

性質3:對於任何乙個二叉樹,若葉子的數量為n0,度為2的結點數量為n1,則有n0=n1+1

滿二叉樹:深度為k的二叉樹至多2^k-1個結點

完全二叉樹:除最後一層外每一層結點都是滿的(達到最大結點數),最後一層結點是從左向右出現的

性質4:具有n個結點的完全二叉樹的深度必為[log2n]+1

性質5:對於完全二叉樹,從上至下從左到右編號,則編號為i的結點。其左孩子(長子)編號必為2i,其右孩子編號為2i+1,雙親的編號為i/2

下面介紹二叉樹的儲存方式(順序/鏈式)

1>順序儲存方式

對於任意給定的二叉樹將其變成滿二叉樹,如果沒有子節點則補零

2>鏈式儲存

鏈式儲存方式類同於孩子兄弟表示法

資料結構 樹的儲存方式

樹的儲存方式中最簡單的一種是 一維陣列鍊錶結構 自己理解的 最左邊一列代表的是陣列的序號 下標 中間a b c.代表內容 右一列代表父母節點 因為a無父母節點 所以a為 1 最右側 貌似凌亂散布的 代表的是孩子節點的下標序號 實現 define max size 100 定義陣列最大容量 typed...

儲存的基本理論

通過訪問排程器,來訪問集群 儲存 iscsi udev multipath nfs 集群 lb ha 儲存技術的分類 das nasnfs cifs dan 是sci協議,傳輸的是會 ethernet iscsi協議 sci 協議會產生電腦開銷 伺服器拓展槽 pci e gpu 卡也可以插在pci ...

PHP原始碼分析 變數的儲存方式

分類 c c php 2011 12 09 17 16 1683人閱讀收藏 舉報php 儲存zend string table struct php中的變數型別和值是通過c語言實現的,核心具體是如何組織使用者在php中定義的變數呢?hashtable在ze核心中被廣泛使用,php變數也正是儲存在乙個...