資料結構與演算法之樹簡介

2021-10-25 04:07:06 字數 2842 閱讀 6836

1.示例樹的圖示

2.樹的定義與結構特點

1.樹的定義

由乙個或者多個(n>=0)節點組成的有限集合t,有且僅有乙個節點稱為根(root),當n>1的時候,

其餘的節點分為m(m>=0)個互不相交的有限集合t1,t2,...,tm.每個集合本身又是棵樹,被稱作這顆樹的子樹.

(由此可以看出樹具有遞迴性,大樹裡面有小樹).

2.樹的結構特點

(1)非線性結構,有乙個直接前驅,但可能有多個直接後繼(1:n);

(2)樹的定義具有遞迴性,樹中還有樹;

(3)樹可以為空,即節點個數為0;

3.樹的 一些術語

根:即根結點,沒有前驅;

葉子:即終端結點,沒有後繼(示例樹種的5,6,7,8,9對應的節點);

森林:指m顆不相交的樹的集合(如刪除根節點後的子樹組成的集合);

有序樹:節點各子樹從左到右有序,不能互換(左為第一);

無序樹:節點各子樹可以互換位置;

雙親:即上層的那個結點(直接前驅),稱作parent;

孩子:即下層節點的子樹(直接後繼),稱作child;

兄弟:同一雙親下的共層節點(孩子之間互稱兄弟),稱作sibling;

堂兄弟:即雙親位於同一層但非同一雙親的結點,稱作cousin;

祖先:從根結點到該結點索經分支的所有結點;

子孫:該結點下層子樹中的任一結點;

結點:即樹的資料元素;

結點的度:結點掛接的子樹數,有幾個直接後繼就是幾度;

結點的層次:從根到該結點的層數,根基點算第一層;

終端結點:即度為0的結點,即葉子結點;

分支結點:除舒更意外的結點,也稱作內部結點;

樹的度:所有結點度中的最大值(即max(各結點的度));

樹的深度(或高度):所有結點中最大的層數(即max(各結點的層次));

4.樹的表示方法

圖形表示法;

廣義表示法;

雙親表示法;

孩子表示法;

左孩子右兄弟表示法(任何一種顆都可以通過左孩子右兄弟表示法轉換成一顆二叉樹).

5. 利用左孩子右兄弟表示法將一棵樹轉換

6.二叉樹

6.1 二叉樹的基本概念

定義:

n(n>=0)個結點的有限集合,有乙個根節點以及兩顆互不相交的分別稱為左子樹和右子樹的二叉樹組成.

邏輯結構:

一對二基本特徵:

每個節點最多只有兩顆子樹(不存在度大於2的結點);

左子樹和右子樹的次序不能顛倒(有序樹);

6.2二叉樹的基本形態

6.3 二叉樹的性質

6.4 特殊的二叉樹-滿二叉樹

定義:

一顆深度為k且有2^k-1個結點的二叉樹,每一層都充滿了結點.

如下圖中的滿二叉樹的深度為3,則它擁有2^3-1個結點,即7個結點.

6.5 特殊的二叉樹-完全二叉樹

定義:

除了最後一層外,每一層上的節點數均達到最大值,在最後一層上只缺少右邊的若干節點.

6.6 二叉樹性質5的**釋

6.7二叉樹的表示

有二叉鍊錶法和三叉鍊錶法

6.8 二叉樹的遍歷

遍歷的定義:

指的是按照某條搜尋路線遍訪每個結點且不重複(又稱周遊);

遍歷的用途:

它是樹結構插入刪除修改查詢和排序運算的前提,是二叉樹一切運算的基礎和核心.

遍歷方法:

牢記一種約定,對於每個結點的查考都是「先左後右」.

限定先左後右之後,樹的遍歷有三種實現方案:

dlr---先根序遍歷,先序遍歷,即先根再左再右;

ldr---中根序遍歷,中序遍歷,即先左再跟再右;

lrd---後根序遍歷,後許遍歷,即先左再右再根.

注意:這裡的先序,中序和後序都是指訪問結點d是先於左右子樹遍歷還是在左右子樹中間遍歷還是在左右子樹後面遍歷.

從遞迴角度來看,這三種演算法是完全相同的,或者說這三種遍歷演算法的路徑是相同的,只是訪問節點的時機不同.

《資料結構與演算法》之資料結構簡介

資料結構 資料 結構,資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。一 資料的邏輯結構 指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關...

資料結構與演算法之樹

樹 元素之間儲存一對多關係的資料結構,常用於表現族譜關係 組織關係等,也可以借助特殊的樹型結構實現查詢 排序等演算法,一般使用倒懸樹的方式表示。樹的相關術語 根結點 樹的最上層元素,有且只能有乙個。子結點 該結點的對應下一層元素。父結點 該結點的對應上一層元素。葉子結點 沒有子結點的元素,一般處於樹...

資料結構與演算法簡介

演算法簡介 一 資料結構與演算法的關係 雖然本門課程叫 資料結構 但經常會講到演算法,以及它們之間的關係。在市面上也經常有諸如 資料結構與演算法分析 這樣名字的書。實際上,資料結構與演算法是依存關係。只談資料結構而拋棄演算法,則資料是 死 的,沒有活力的 只談演算法而拋棄資料結構,則演算法無法有所依...