1、樹的定義
1、有且只有乙個根的節點;
2、有若干個互不相交的子樹,這些子樹本身也是一棵樹;
通俗定義:樹是由節點和邊組成;每個節點只有乙個父節點,可以有多個子節點;根節點沒有父節點。
專業術語:
節點 父節點 子節點 子孫 堂兄弟
*樹的深度:*從根節點到最底層節點的層數稱為深度,根節點是第一層;
*葉子節點:*沒有子節點的節點
*非終端節點:*實際就是非葉子節點
*度:*子節點的個數為度
2、樹的分類
1、一般樹
任意乙個節點的子節點的個數都不受限制
2、二叉樹
任意乙個節點的子節點個數最多兩個,並且子節點的位置不可改變
分類:(1)一般二叉樹
(2)滿二叉樹
不增加樹的層數的情況下,無法再多新增乙個節點的二叉樹就是滿二叉樹
(3)完全二叉樹
如果只是刪除了滿二叉樹最底層最右邊的連續若干個節點,這樣形成的二叉樹就是完全二叉樹
3、森林
n個互不相交的樹的集合
3、樹的儲存
(1)二叉樹的儲存
1> 連續儲存【完全二叉樹】
優點:查詢某個節點的父節點和子節點
缺點:好用記憶體空間大
2> 鏈式儲存
(2)一般樹的儲存
1> 雙親表示法
求父節點方便
2> 孩子表示法
求子節點方便
3> 雙親孩子表示法
求父節點和子節點都很方便
4> 二叉樹表示法
把乙個普通樹轉換成二叉樹來儲存;
具體措施:設法保證任意乙個節點左指標域指向它的第乙個孩子,右指標域指向它的堂兄弟,只要滿足此條件,即可將普通樹轉換成二叉樹,乙個普通樹轉換成的二叉樹一定沒有右子樹。
(3)森林的儲存
3、樹的操作
1> 遍歷
1.先序遍歷
先訪問根節點,再先序訪問左子樹,最後訪問右子樹。
2.中序遍歷
先訪問左子樹,再先序遍歷根節點,最後訪問右子樹。
3.後序遍歷
先訪問左子樹,再先序右子樹,最後訪問根節點。
4、樹的應用
樹是資料庫中資料組織的一種重要組織形式;
作業系統子父程序的關係本身就是一棵樹;
物件導向語言中類的繼承關係;
哈夫曼樹
非線性結構 樹 樹型別 樹應用
上乙個部落格已經解釋過了什麼是線性和非線性的區別。想要系統的了解,需要參照之前的博文。樹是一種非常重要的非線性結構!為什麼稱為樹結構呢?主要是長得有點像,樹形結構講究層級和分叉,和自然界的樹比較相近。以下的樹是無序,單純按存放方式。理解樹 這是乙個簡單的樹形結構圖,其中在理論範疇來講,節點三到五稱為...
線性結構和非線性結構
資料結構是計算機儲存 組織資料的方式。常見的資料結構分類方式如下圖 常用的線性結構有 線性表,棧,佇列,迴圈佇列,陣列。線性表中包括順序表 鍊錶等,其中,棧和佇列只是屬於邏輯上的概念,實際中不存在,僅僅是一種思想,一種理念 線性表則是在記憶體中資料的一種組織 儲存的方式。線性結構是最簡單最常用的一種...
線性結構與非線性結構
對於資料結構,感情是 在撓頭也要學啊 我愛資料結構,資料結構使我快樂 呵 這裡一點一點開始扯 線性資料結構 定義為 1.有唯一的首元素及尾元素,2.資料元素之間是一對一關係 3.除首元素和尾元素外,每個元素都只有唯一的前段和後端 我詞真窮 樣例 線性表,堆,棧,佇列,陣列 基本指一維的 鍊錶 非線性...