演算法筆記 樹

2021-08-14 16:32:50 字數 1061 閱讀 4395

樹的定義和性質

現實中的樹是由樹根,莖幹,樹葉組成的,樹的營養時由樹根出發,通過莖幹與樹枝來不斷傳遞,最終到達樹葉的。在資料結構中,樹則是用來概括這種傳遞關係的一種資料結構。為了簡化,資料結構中把樹枝分叉處,樹葉,樹根抽象為結點,其中樹根抽象為根結點,且對一棵樹來說最多存在乙個根結點;把樹葉概括為葉子結點,且葉子結點不再延伸出新的結點;把莖幹和樹枝統一抽象為邊,且一條邊只用來連線兩個結點(乙個端點乙個)。這樣,樹就被定義為由若干個結點和若干條邊組成的資料結構,且在樹中的結點不能被邊連線成環。在資料結構中,一般把根節點置於最上方(與現實中的樹恰好相反),然後向下延伸出若干條邊到達子結點(從而向下形成子樹),而子結點又向下延伸出邊並連線一些結點……直至到達葉子結點,看起來就像是把現實中的樹顛倒過來的樣子。

下面給給出幾個比較使用實用的概念概念和性質,其中性質①⑤經常被用來出邊界資料:

①樹可以沒有結點,這種情況下把樹稱為空樹;

②樹的層次從根結點開始算起,即根結點為第一層,根結點子樹的根結點為第二層,以此類推;

③把結點的子樹棵樹稱為結點的度,而樹中結點的最大的度稱為樹的度(也稱為數的寬度),如上圖三棵樹的度分別為2,3,5.

④由於一條邊連線兩個結點,且樹中不存在環,因為對此有n個結點的樹,邊數一定是n-1.且滿足連通,邊數等於頂點數減一的結構一定是一棵樹。

⑤葉子結點被定義為度為0的結點,因此當樹中只有乙個結點(即只有根結點)時,根結點也算作葉子結點;

⑥結點的深度是指從根結點(深度為1)開始自頂向下逐層累加至該結點時的深度值;結點的高度是指從最底層葉子結點(高度為1)開始自底向上逐層累加至該結點時的高度值。樹的深度是指樹中結點的最大深度,樹的高度是指樹中結點的最大高度。對樹而言,深度和高度是相等的,例如上圖中的三棵樹的深度高度分別為4,4,2,但是具體到某個結點來說深度和高度就不一定相等了。

⑦多棵樹組合在一起稱為森林,即森林就是若干棵樹的集合。

摘自《演算法筆記》胡凡,曾磊主編

演算法筆記 樹

二叉樹的基本操作 刪除查詢並修改 計算結點數 計算樹高 二叉樹的演算法 二叉樹判別 判別滿二叉樹 判別二叉搜尋樹 適用於 完全二叉樹 滿二叉樹 二叉搜尋樹的插入 遞迴 void insert dg node p,int x if p d x return 如果已經存在,就不插入 else if p ...

《演算法導論》筆記 B樹

演算法 cc c 資料結構 b樹是平衡樹的一種,主要用於操作儲存在磁碟等二級儲存裝置上的大量資料。相比起記憶體 主存 來說,磁碟操作的速度非常慢 慢幾個數量級 所以涉及到儲存在磁碟的資料的時候,儘量減少磁碟的讀取和寫入操作對於提高操作速度是非常重要的。b樹就是針對這個特點進行設計以滿足相應要求的。b...

演算法筆記 剩下的樹

題目描述 有乙個長度為整數l 1 l 10000 的馬路,可以想象成數軸上長度為l的乙個線段,起點是座標原點,在每個整數座標點有一棵樹,即在0,1,2,l共l 1個位置上有l 1棵樹。現在要移走一些樹,移走的樹的區間用一對數字表示,如 100 200表示移走從100到200之間 包括端點 所有的樹。...