樹的簡介及儲存結構

2021-08-13 14:27:52 字數 1546 閱讀 5765

樹是一種重要的非線性的資料結構,直觀地看,它是資料元素(在數中稱為節點)按分支關係組織起來的結構,很像自然界中的數那樣。

樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資料庫系統中,樹型結構也是資訊的重要組織形式之一。一切具有層次關係的問題都可用樹來描述。

定義編輯

一棵樹(tree)是由n(n>0)個元素組成的有限集合,當n=0時稱為空樹。在任意一顆非空樹種:有且僅有乙個特定的稱為根(root)的節點,(2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集t1,t2,…,tm,其中每個集合本身又是乙個棵樹,並且稱為根數的子樹。

樹的相關用語:

1、結點(node):表示樹中的資料元素,由資料項和資料元素之間的關係組成。在圖中,共有10個結點。

2、結點的度(degree of node):結點所擁有的子樹的個數,在圖中,結點a的度為3。

3、樹的度(degree of tree):樹中各結點度的最大值。在圖5.1中,樹的度為3。

4、葉子結點(leaf node):度為0的結點,也叫終端結點。在圖5.1中,結點e、f、g、h、i、j都是葉子結點。

5、分支結點(branch node):度不為0的結點,也叫非終端結點或內部結點。在圖5.1中,結點a、b、c、d是分支結點。

6、孩子(child):結點子樹的根。在圖中,結點b、c、d是結點a的孩子。

7、雙親(parent):結點的上層結點叫該結點的雙親。在圖中,結點b、c、d的雙親是結點a。

8、祖先(ancestor):從根到該結點所經分支上的所有結點。在圖中,結點e的祖先是a和b。

9、子孫(descendant):以某結點為根的子樹中的任一結點。在圖中,除a之外的所有結點都是a的子孫。

10、兄弟(brother):同一雙親的孩子。在圖5.1中,結點b、c、d互為兄弟。

11、結點的層次(level of node):從根結點到樹中某結點所經路徑上的分支數稱為該結點的層次。根結點的層次規定為1,其餘結點的層次等於其雙親結點的層次加1。

12、堂兄弟(sibling):同一層的雙親不同的結點。在圖中,g和h互為堂兄弟。

13、樹的深度(depth of tree):樹中結點的最大層次數。在圖5.1中,樹的深度為3。

14、無序樹(unordered tree):樹中任意乙個結點的各孩子結點之間的次序構成無關緊要的樹。通常樹指無序樹。

15、有序樹(ordered tree):樹中任意乙個結點的各孩子結點有嚴格排列次序的樹。二叉樹是有序樹,因為二叉樹中每個孩子結點都確切定義為是該結點的左孩子結點還是右孩子結點。

16、森林(forest):m(m≥0)棵樹的集合。自然界中的樹和森林的概念差別很大,但在資料結構中樹和森林的概念差別很小。從定義可知,一棵樹有根結點和m個子樹構成,若把樹的根結點刪除,則樹變成了包含m棵樹的森林。當然,根據定義,一棵樹也可以稱為森林。

圖5.1

樹的儲存結構

樹的儲存結構 樹的存貯結構有多種表示方法,比較典型的乃是順序結構和鍊錶結構兩類。順序存貯結構即向量,一般將樹結點按自上而下,自左至右的順序一一存放。如前文所介紹的完全二叉樹就可以採用順序存貯結構。1.雙親鍊錶表示法 順序儲存結構常用的有雙親表示法,這種方法在每個陣列元素中存放某個結點資訊和該結點的雙...

樹的儲存結構

樹的資料邏輯結構是一對n的,除了根節點,每個元素只有乙個前驅,但是可以有多個後繼,具有層次關係,像家譜就是乙個樹的例子。樹是有n個結點的有限集合,當n大於零時,這個樹有且僅有乙個稱為根的結點,從根節點延申出來的元素可以時n個,同時可以再延申。n 0時,該樹就是空樹。樹的第一層就是根結點,第二層都是稱...

樹的儲存結構

1 第一行乙個n,代表這個樹有n個節點,接下來輸入n行,第i行輸入兩個數字,li,ri,代表第i個節點的左兒子右兒子 節點序號從1編號到n 如果沒有左兒子或者右兒子,就用 1代替,輸出它的層序遍歷 include include include using namespace std struct ...