7 1 樹的基本概念 性質與運算

2021-08-10 15:46:53 字數 1216 閱讀 2675

樹是由

n 個結點(或元素)組成的有限集合。通常用符號

t表示。 當n

=0時,稱為空樹; 當n

>

0 時,有乙個根結點(root),由根結點又指向有限個互不相交的子集ti

,這些子集同樣也是一顆樹,稱為子樹(sub tree)。

樹是一種利用遞迴定義的。通常用來表示具有層次的資料。樹是具有一對多的關係,可以由圖轉化來(圖的生成樹(spanning tree))。因此在某些教材中或者圖論教材中,通常將樹看作是圖的特例。但是在資料結構中(尤其是實現上),樹和圖還是有很大的區別。

其中,括號表示法通常作為樹的序列輸入,後面都會用到。通常形式如:r(

c1,c

2,..

.,cn

) ,其中

r 表示根,ci

表示以r

為父母的第

i個孩子結點作為根結點的子樹。樹形表示法作為視覺化表示,能夠很清晰的表示一棵樹的結構和層次特性。雖然連線兩個結點的線段沒有標註方向,但只要確定了根節點,則必然是從根指向孩子的有向圖。

這些性質都不難證明(有些可能需要數學歸納法)。

樹的基本操作有三大類:查詢、插入刪除、遍歷。

查詢和插入刪除在之前的線性結構中也經常出現,而樹的遍歷則有所不同,分為深度遍歷和廣度遍歷(層次遍歷)。深度遍歷又分為先根(preorder)遍歷和後根(postorder)遍歷。在後面的幾小節中,主要以二叉樹來演示如何進行相關操作。

對於普通的樹來說,通常使用鏈式儲存結構。對於具體的儲存方式來說,區別在於指標鏈構造的方式:指向父母還是指向孩子。

/**

* 雙親儲存結構的結點定義

*/template

struct treenodeparent;

//具體的使用方法

treenodeparentmytree[1024];

7.9節的不相交集合(disjoint set,又叫並查集)就是使用了這種儲存結構。

/**

* 孩子鏈儲存結構的結點定義

*/template

struct treenodechild;

/**

* 孩子兄弟鏈儲存結構的結點定義

*/template

struct treenodechildsibling;

資料結構之樹的基本概念 性質

樹的定義 n個節點組成的有限集合。n 0,空樹 n 0,1個根節點,m個互不相交的有限集,每個子集為根的子樹。1 基本術語 節點的度 樹中某個節點的子樹的個數。樹的度 樹中各節點的度的最大值。分支節點 度不為零的節點。葉子節點 度為零的節點。路徑 i j 路徑長度 路徑經過節點數目減1。孩子節點 某...

二叉樹基本概念及性質

二叉樹基本概念 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉 堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。二叉樹...

樹的基本概念

樹的遞迴定義如下 單個結點是一棵樹,樹根就是該結點本身。設t1,t2,tk是樹,它們的根結點分別為n1,n2,nk。用乙個新結點n作為n1,n2,nk的父親,則得到一棵新樹,結點n就是新樹的根。我們稱n1,n2,nk為一組兄弟結點,它們都是結點n的子結點。我們還稱t1,t2,tk為結點n的子樹。空集...