数据结构之树概述
非線性結構:
樹的定義:樹(Tree)是n(n>=0)個節點的有限集T。它或是空集(空樹即n=0),或者是非空集。
對于任意一顆非空樹:
(1)有且僅有一個特定的稱為根的節點。
(2)當n>1時,其余節點可分為m(m>0)個互不相交的有限集合T1,T2,T3,......................,Tm? 其中每個集合本身又是一棵樹,并稱為根的子樹。
樹定義
專業定義:
1. 有且只有一個稱為根的節點
2.有若干個互不相交的子樹,這些子樹本身也是一棵樹
通俗的定義:
1.樹是由節點和邊組成
2.每個節點只有一個父節點但可以有多個子節點
3.但有一個節點例外,該節點沒有父節點,此節點稱為根節點
專業術語
節點? ? ? ? ? ?父節點? ? ? ? ? ? 子節點
子孫? ? ? ? ? ?堂兄弟
深度 : 從根節點到最底層節點的層數稱之為深度 ,? 根節點是第一層1
葉子節點:? 沒有子節點的節點
非終端節點:實際就是非葉子節點
度:子節點的個數(最大的子節點)?
節點的度和樹的度:樹的節點包含一個數據元素及若干個指向其子樹的分支,一個節點擁有的子樹數稱為該節點的度。一個樹中節點最大的度數稱為該樹的度
葉子節點、分支節點和根節點:度數為0的節點稱為葉子節點或終端節點。度數不為0的節點稱為非終端節點或分支節點。除根節點外,分支節點也稱為內部節點,而根節點又稱為開始節點
孩子節點和雙親節點:樹中某個節點子樹的根稱為該節點的孩子,響應地,該節點稱為孩子節點的雙親或父節點。
子孫節點和祖先節點:若在一棵樹中存在著一個節點序列k1,k2,......kj? ?使得ki是ki+1的父節點(1=<i<=j),則稱為該節點序列是從k1到kj的一條路徑。若樹中的節點ki到kj存在一條路徑則稱節點ki是kj的祖先,節點kj是ki的子孫
節點的層次和樹的高度:樹中節點的層次是從根開始算起,根為第一層,其余節點的層次等于雙親節點的層數加1.樹中節點最大的層次稱為樹的深度或者高度
有序樹和無序樹:如果將樹中節點的各個子樹看成是從左到右依次有序且不能交換,則稱該樹為有序樹,否則稱為無序樹
森林:森林是m(m>=0)棵互不相交的樹的集合。若將一棵樹的根節點刪除,就的得到該樹的子樹所構成的森林;如果將森林中所有樹作為子樹,用一個根節點把子樹都連起來,森林就變成了一棵樹。
樹分類
一般樹:任意一個節點的子節點的個數都不受限制
二叉樹:任意一個節點的子節點個數最多兩個,且子節點的位置不可更
森林:n個互不相交的樹的集合
?
一般樹:任意一個節點的子節點的個數都不受限制
二叉樹:任意一個節點的子節點個數最多兩個,且子節點的位置不可更改
? ?分類:
? ? ? ?一般二叉樹
? ? ? ?滿二叉樹:在不增加樹的層數的前提下,無法再多添加一個節點的二叉樹就是滿二叉樹
? ? ? ?完全二叉樹:如果只是刪除了滿二叉樹最底層最右邊的連續若干個節點,這樣形成的二叉樹就是完全二叉樹
總結
- 上一篇: Bit-Z转入GXS、PPS、SPHTX
- 下一篇: Java虚拟机(JVM)以及跨平台原理