樹:非線性結構——————其實更像是一串葡萄,哈哈
定義:專業定義:
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都是祖先 ...