樹的定義
樹(Tree)是n(n>=0)個結點的有限集。n=0時稱為空樹瓜晤。在任意一棵非空樹中锥余,有且僅有一個特定的稱為根(Root)的結點,當n>1時痢掠,其余結點可分為m(m>0)個互不相交有限集T1驱犹,T2。足画。雄驹。Tm,其中每一個集合本身又是一棵樹淹辞,并且稱為根的子樹(SubTree)医舆。
對于樹的定義還要強調2點:
(1)n>0時根結點是唯一的,不可能存在多個根結點,只能有一個根結點蔬将。
(2)m>0時子樹的個數(shù)沒有限制爷速,但他們一定是互不相交的。
樹的結點包含一個數(shù)據元素以及若干指向其子樹的分支霞怀。結點擁有的子樹數(shù)稱為結點的度(Degree)惫东。度為0的結點稱為葉結點(Leaf)或者終端結點。度不為0的結點稱為非終端結點或分支結點毙石。除根結點之外凿蒜,分支結點也稱為內部結點。樹的度是樹內各結點的度的最大值胁黑。
結點的層次(Level)從根開始定義起废封,根為第一層,根的孩子為第二層丧蘸,樹中結點的最大層次稱為樹的深度(Depth)或者高度漂洋。
如果將樹中結點的各子樹看成從左至右是有次序的,不能互換的力喷,則稱該樹為有序樹刽漂,否則稱為無序樹。
森林是m(m>=0)棵互不相交的樹的集合弟孟。
樹的存儲結構
(1)雙親表示法
我們假設以一組連續(xù)空間存儲樹的結點贝咙,同時在每個結點中,附設一個指示器指示其雙親結點到鏈表中的位置拂募。也就是說庭猩,每個結點除了知道自己是誰以外,還知道它的雙親在哪里陈症。
其中data是數(shù)據域蔼水,存儲結點的數(shù)據信息,而parent是指針域录肯,存儲該結點的雙親在數(shù)組中的下標趴腋。
由于根結點沒有雙親,所以我們約定根結點的設置域為-1论咏,這就意味者优炬,所有的根結點都存有他雙親的位置。
(2)孩子表示法
由于樹中每個結點可能有多顆子樹厅贪,可以考慮用多重鏈表蠢护,即每個結點有多個指針域,其中每個指針指向一顆子樹的根結點卦溢,我們把這種方法叫做多重鏈表表示法糊余。
(3)孩子兄弟表示法
任意一棵樹,它的結點的第一個孩子如果存在就是唯一的单寂,它的右兄弟