資料結構之樹

2021-09-06 19:02:13 字數 1273 閱讀 8607

樹:非線性結構——————其實更像是一串葡萄,哈哈

定義:專業定義:

1、有且只有乙個成為根節點;

2、有若干個互不相交的的子樹,這些子樹本身也是一顆樹;

通俗的定義:

1、樹是由節點和邊(指標域)組成;

2、每個節點只有乙個父節點,但可以有很多個子節點;

3、但有乙個節點例外,該節點沒有父節點,此節點成為根節點;

涉及的術語:

節點, 父節點, 子節點, 子孫, 堂兄弟;

深度:從根節點到最底層節點的層數稱之為深度;

葉子節點:沒有子節點的節點

非終端節點:實際就是非葉子節點

度:子節點的個數;

樹的度:子節點的個數數目中最大值;

樹分類:

一般樹:任意乙個子節點的個數的都不受限制;

二叉樹;任意乙個節點的字節點的個數最多兩個,且子節點的位置不可改變;

一般二叉樹

滿二叉樹:在不增加樹層數的前提下,無法再多新增乙個節點的二叉樹;

完全二叉樹(重點):如果只是刪除了滿二叉樹最底層右邊連續若干個節點。這樣形成的二叉樹;

森林:n個互不相交的樹的集合;

二叉樹的儲存(重點):(一般二叉樹轉成完全二叉樹來儲存?原因是樹是非線性的,而我們要線性的儲存它,所以要將非線性轉成線性來儲存)

連續儲存【完全二叉樹】:

優點:查詢某個節點的父節點和子節點(包括查詢某個節點有沒有子節點)

缺點:耗用記憶體空間過大;

鏈式儲存:

(每個節點分三塊)

一般樹的儲存:

雙親表示法,孩子表示法,雙親孩子表示法,

二叉樹表示法:

把乙個普通樹轉化成二叉樹來儲存,具體轉換方法:設法保證任意乙個節點的左指標域指向它的第乙個孩子,右指標域指向它的兄弟;

通過此辦法,就可以將一顆樹轉化為二叉樹;

·      乙個普通樹轉化成的二叉樹一定沒有右子樹;

如下圖所示:

森林的儲存:

轉化為二叉樹儲存;規則如同普通樹轉化成二叉樹一致;(每棵樹根節點為兄弟節點)

如下圖所示:

霍夫曼樹:每個節點要麼沒有子節點,要麼有兩個子節點;

資料結構之 樹

1.雙親表示法 下標 資料 parentid 2.孩子表示法 data child1 child2 child3 3.雙親孩子表示法 下標 parentid firstchildid secondchildid 節點 下標 next 頁的話next應該是null 4.孩子兄弟表示法 data 第一次...

資料結構之樹

一 樹的基本概念 樹 tree 是元素的集合,樹有多個節點可以儲存元素 二 二叉樹 每個節點最多有兩個子節點的樹稱為二叉樹 常用來做二分查詢 binary search 等 三 b樹 即二叉搜尋樹 binary search tree 是一種特殊形態的二叉樹 1 所有節點最多擁有2個子節點 2 所有...

資料結構之樹

樹是節點的有限集合.度 a的度是3 b的度是2 d的度是2 c的度為0 當前節點的直接分支 葉子 終端節點就是葉子 e f g h c 根 非終端節點就是根 a b d 有序樹 如果e f不可以隨意換順序 就是有序樹 無序樹 如果 e f可以隨意換順序而且不影響邏輯 祖先 對e來說 b,a都是祖先 ...