資料結構之樹的基本概念

2021-09-27 13:36:49 字數 996 閱讀 3342

樹是一種非線性的資料結構,它是若干節點的集合,是由唯一的根和若干個不相交的子樹組成的,其中每一棵子樹又是一棵樹。由此可知,樹是可以遞迴定義的,即在樹的定義中又用到了樹的定義。需要注意有乙個特殊情況,就是樹的節點可以為零,這個時候的樹就是一棵空樹。

如下圖:

其中a節點就是根節點,而b、e、k、f、l等節點組成的樹就是一棵子樹。

以上圖的樹為例:

樹的順序儲存結構最直觀的是雙親儲存結構,用一位陣列即可以實現。定義方法就為:

int tree[maxsize]

;

下面來舉乙個例子說明乙個陣列是如何表示一棵樹的。

如上圖,用陣列下標表示樹中的結點,陣列元素的內容就表示該節點的雙親結點,這樣有了結點(下標)以及結點直接的關係(內容),就可以表示一棵樹了。比如下標5的內容為3,說明節點5的雙親結點為3;下標1處的結點內容為-1,說明1為根節點。

用這種儲存結構來儲存樹,當知道乙個結點後就可以很容易的找到其雙親結點。即已知結點i,那麼它的雙親結點就是tree[i],因此這樣的儲存方式稱為雙親儲存結構。

說明:

樹的鏈式儲存結構最常用的有以下兩種:

(1)孩子儲存結構

孩子儲存結構實質上就是圖的鄰接表儲存結構。樹就是一種特殊的圖,把圖中的多對多關係刪減為一對多關係即得到樹,因此圖的儲存結構完全可以用來儲存樹。

(2)孩子兄弟儲存結構g

孩子兄弟儲存結構與樹和森林與二叉樹的相互轉換關係密切,因此放在樹和森林與二叉樹的相互轉換這一節講解。

說明:這裡講到的樹的雙親儲存結構、孩子儲存結構和孩子兄弟儲存結構在不同的學校試卷中可能出現不同的表述,最嚴格的表述應該是:

資料結構 樹 基本概念

之前說的線性結構是一對一的關係,這裡的樹就是一對多的資料結構。樹 tree 是n n 0 個結點的有限集。n 0時稱為空樹。在任意一棵非空樹中 1 有且僅有乙個特定的稱為根 root 的結點 2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集 樹的定義其實用到了遞迴的方法,就是說樹的定義之...

資料結構 樹的基本概念

樹與非樹?二叉樹度為二的樹稱為二叉樹。那問題來了,何為度為二呢?其實,度的意思有些兒子的感覺,度為二的意思就是,樹中的節點,其兒子最多有兩個。就像現在的二孩政策,應該比較好理解吧。二叉樹有很多性質 比如,二叉樹第i層最大的節點數2 i 1 其中i 1 二叉樹的節點可以分為三種 1.沒有兒子的結點 度...

基本概念之資料結構

什麼是資料結構 目前沒有官方的定義。思考 解決問題方法的效率,跟什麼有關呢?解決問題方法的效率,跟資料的組織方式有關 例1 如何在書架上擺放書籍?首先這個問題是不科學的,沒有告訴書架的是什麼樣子的。解決方法 操作2 怎麼找到某本指定的書?方法2 按照書名的拼音字母順序排放 方法3 把書架劃分成幾塊區...