樹是n(n>=0)個節點的有限集。n=0時稱為空樹。在任意一顆非空樹中:有且僅有乙個特定的節點稱為根的節點;當n>1時,其餘節點可分為m(m>0)個互不相交的有限集t1,t2,……,tm,其中每乙個集合本身又是一顆樹,並且稱為根的子樹。
對比樹的結構和線性結構:
線性結構:第乙個資料元素,無前驅;
最後乙個資料元素,無後繼;
中間元素,乙個前驅乙個後繼。
樹結構:無雙親,唯一;
葉節點,無孩子,可以多個;
中間結點,乙個雙親多個孩子。
雙親表示法:在每個節點中,附設乙個指示器指示其雙親節點在陣列中的位置。
孩子表示法:每個節點有多個指標域,其中每個執政指向一顆子樹的根節點,把這種表示方法叫做多重鍊錶表示法。
孩子兄弟表示法:任意一顆樹,他的節點的第乙個孩子如果存在就是唯一的,他的右兄弟如果存在也是唯一的。因此,設定兩個指標,分別指向該節點的第乙個孩子和此節點的右兄弟。
順序儲存結構一般只用於完全二叉樹。
鏈式儲存結構,二叉鍊錶:二叉樹沒個基點最多有兩個孩子,所以他設計乙個資料域和兩個指標域是比較自然的想法。如果有需要,還可以再增加乙個指向其雙親的指標域,那樣就稱為三叉鍊錶了。
前序遍歷,中序遍歷,後序遍歷,層序遍歷
線索二叉樹:把這種指向前驅和後繼的指標稱為線索,加上線索的二叉鍊錶稱為線索鍊錶。對二叉樹以莫中次序遍歷使其變為線索二叉樹的過程稱做是線索化。線索化的過程就是在遍歷的過程中修改空指標的過程。
資料結構基礎學習筆記(三)樹
前邊的資料結構都是一對以的關係,而樹是一種一對多的關係。樹的定義方法也是很有意思的,是一種遞迴的定義方法,就是套娃,樹的定義裡又用了樹的定義。樹的定義是這樣的 樹是n個節點的有限集,當n 0時,稱為空樹,非空樹滿足 1 有且僅有乙個為根的結點 2 其餘結點可分為m個不相交的有限集,每個集合本身也是一...
資料結構學習之路(一)
資料結構 是計算機學科的必修課程,涵蓋了計算機學科的演算法設計 數值分析 作業系統和編譯原理等課程所涉及的大部分相關演算法的實現。學好該課程,不僅對這些後續課程的學習有很大幫助,而且能在實際中發揮其廣泛的用途。想成為程式武林的高手嗎?快點跟我一起學學獨孤九劍 資料結構 1.1 資料結構 資料結構是指...
資料結構學習之路四
遞迴的玩法 遞迴的經典模型就是斐波那契數列和漢諾塔。具體的原理已經到處都是,我們直接從帶 開始看 斐波那契數列 public class fibonacci else if n 2 else 測試 public class testfibonacci 漢諾塔 所有的盤子剛開始都放在塔座a上,要求將所...