清風169發表於2020-12-25

說明:如果在看部落格過程中有對深度,高度和層次有迷惑的,請不要著急,這是因為不同的基數問題。到底是從0開始還是從1開始算,先忽略這個問題,部落格下面轉載的有詳細說明。

樹的概念(理解即可):

樹是由結點或頂點和邊組成的(可能是非線性的)且不存在著任何環的一種資料結構。沒有結點的樹稱為空(null或empty)樹。一棵非空的樹包括一個根結點,還(很可能)有多個附加結點,所有結點構成一個多級分層結構。

圖1
圖1

樹的基本知識:

  • 節點深度:對任意節點x,x節點的深度表示為根節點到x節點的路徑長度。所以根節點深度為0,第二層節點深度為1,以此類推。如圖1節點5的深度為0,節點2的深度為1,節點1的深度為2。(深度從上往下看)
  • 節點高度:對任意節點x,葉子節點到x節點的路徑長度就是節點x的高度。圖1中節點1,3,7的高度為0,節點2,8高度為1,節點5高度為2.(高度從下往上看)
  • 樹的深度:一棵樹中節點的最大深度就是樹的深度,也稱為高度。圖1的深度為2
  • 父節點:若一個節點含有子節點,則這個節點稱為其子節點的父節點.如圖1節點5是節點2,8的父節點
  • 子節點:一個節點含有的子樹的根節點稱為該節點的子節點。如圖1節點2,8是節點5的子節點。
  • 節點的層次:從根節點開始,根節點為第0層,根的子節點為第1層,以此類推
  • 兄弟節點:擁有共同父節點的節點互稱為兄弟節點。如圖1節點2和8是兄弟節點。
  • 度:節點的子樹數目就是節點的度。如圖1中節點5,2的度為2,節點8的度為1,節點1,3,7的度為0
  • 葉子節點:度為零的節點就是葉子節點.如1圖中節點1,3,7
  • 分支結點:度大於0的結點為分支結點,顯然除了葉子結點之外的結點都為分支結點。如圖1中節點5,2,8
  • 祖先節點:對任意節點x,從根節點到節點x的所有節點都是x的祖先
  • 後代:對任意節點x,從節點x到葉子節點的所有節點都是x的後代
  • 森林:m顆互不相交的樹構成的集合就是森林

以下內容轉自 https://blog.csdn.net/weixin_41133154/article/details/80027285

https://blog.csdn.net/weixin_41133154/article/details/80027285 轉載內容開始

樹的基本術語最全面最易懂解釋start

樹的定義:

①如果樹的結點個數為0,則樹為空樹

②如果樹的結點個數為1,則該結點是被稱為根結點的結點

③如果樹的結點個數大於1,則必存在一個稱為根的結點,它的分支下是幾個互不相交的有限集合,並且這些互不相交的有限集合本身又是一棵樹。

定義註釋:從定義③可知,樹的定義蠻有趣的,樹中有樹,樹中還是樹,所以可知樹的定義是一個遞迴定義,從下圖可以看出,如果你仔細分析過帶簡單迴圈體的遞迴程式,那麼會知道程式的整個執行路徑其實就是一棵樹,所以樹和遞迴還是有不淺的聯絡的。

(1)結點(node)

樹的結點由資料元素及其若干分支組成,如下圖所示:

 

(2)樹和子樹(subtree)

以根結點為根的樹為全樹(或樹),以其他結點作為根結點的樹為子數

所以當談到以哪個結點為根結點,就應該知道指的是哪棵子數,以一個結點作為根結點的子數是唯一的。

(3)結點的度(degree of node)

結點的度指的是結點分支的個數,如下圖所示:

(4)樹的度

選取所有結點中最大的度,就是樹的度,如下圖所示:

(5)葉子結點(leaf node)

度為0的結點就是葉子結點,它位於樹最深層,並且樹只要非空,就一定存在葉子結點,如下圖所示:

(6)分支結點(internal node)

度大於0的結點為分支結點,顯然除了葉子結點之外的結點都為分支結點。

而且根結點也是分支結點。

(7)父節點(father node)和子結點(child node)

一個結點若干分支下的結點都為該結點的子結點(或稱孩子(children)),並且,該結點稱為子結點的父節點,如下:

(8)兄弟結點(brother)和堂兄弟結點

父節點下的所有子結點互為兄弟結點,如下圖,B,C,D結點互為兄弟結點

堂兄弟結點:位於同一層的,並且父節點之間是兄弟結點的結點互為堂兄弟結點,上圖中,E,G為堂兄弟結點,F和G也是堂兄弟結點,他們的父節點是兄弟結點。

(9)祖先(ancestor)和子孫(descendant)

這個關係就同父親和孩子一樣。從根結點到該結點路徑上的所有結點都為該結點的祖先,如下圖所示:

反之,C,G,H就是A的子孫,G和H都為C的子孫,H也可以稱為G的子孫,不過因為G和H只隔一代,所以一般稱為孩子

所有的結點都有一個公共祖先,就是根結點,但任意兩個結點可以不只一個祖先,比如E和F的公共祖先有A和B

(10)路徑(path)

從一個結點到另一個結點之間的邊和結點構成路徑,如下圖:

A到H的路徑包含A,C,G,H結點和連線這些結點的三條邊

(11)子樹根結點

如圖,A的子樹根結點為B,C,D。B的子樹根結點為E,F,D沒有子樹根結點

(12)層次(level)

樹是一個遞迴結構,所以也有層次這種概念,由層次也會引發出樹的深度,就好像遞迴也有深度一樣。結點的層次為從結點到根結點的路徑中邊的條數,並且認為根結點的層次為0,因為根結點到自身的路徑中邊的條數為0(但也有一些教科書假設根結點的層次為1,這個時候要注意書中相應的說明),如下圖所示,B的層次為1,G的層次為2,H的層次為3

結點的層次有時也稱為結點的深度(depth)

(13)樹的深度

與樹的度對應於結點的度一樣,樹的深度也是選取結點中的最大深度(或最大層次),下圖的樹的深度為3

樹的深度是一個自頂向下的概念,是從根結點出發,向著葉子結點方向前進的,並且深度這個概念一般只用來描述樹,當描述結點的深度時,層次更為恰當,但是用深度也無妨。

(14)結點的高度(height of node)

高度與深度不同,高度的描述是自下向頂的,而深度是自頂向下的,同一層次的結點的高度是可以不同的,下面先來介紹高度的概念。

從一個結點出發,一直到它的葉子結點的最大路徑中的邊的條數,就是該結點的高度,葉子結點的高度認為是0,因為從葉子結點出發,到它本身的路徑只有一條,並且邊數為0。下圖示出了所有結點的高度,可以觀察到,同一層次的葉子結點的高度不一定相同,因為它們的葉子結點的最大層次是不同的。

這裡,由於A結點到葉子結點的最大路徑為A->C->G->H,而不是A->B->E(F)和A->D,所以它的高度是3,因為最大路徑的邊數為3

(15)樹的高度

樹的高度就是根結點的高度,如上圖所示,該樹的高度為3

(16)森林(forest)

森林的概念和樹的概念是密切聯絡的。

森林就是彼此不相交的樹的集合,樹也可以看成是森林共有一個根結點後的結構,如下圖所示:

上圖示記出來的就是三棵子樹,他們構成一個(子樹)森林,如果給這三棵子樹共有一個結點,那麼就構成一個樹

這個樹是A,森林是子樹B,C,D的集合,可以看出森林和樹是兩個密切相關的概念。

https://blog.csdn.net/weixin_41133154/article/details/80027285 轉載內容結束

以下內容轉自 https://blog.csdn.net/qq_36667170/article/details/84142019

https://blog.csdn.net/qq_36667170/article/details/84142019 轉載內容結束

的高度和深度

在這裡插入圖片描述
深度定義是從上往下的,高度定義是從下往上的。(其實不用在意這個,反正樹的深度高度怎麼數都一樣的)。
深度和高度涉及到結點的層數有的教材規定根結點在第0層,有的則規定根結點在第1層。原理都是一樣的,因教材而異。
樹從根結點開始往下數,葉子結點所在的最大層數稱為 樹的深度
有的教材對於樹的高度定義是高度就是深度(層數是0123,深度=高度=3;層數是1234,深度=高度=4);而有的教材樹的高度則是看一共有幾層。也就是說不論根節點在第幾層,樹的深度都是和最大層的葉子節點一樣。而樹的高度只要看有幾層就行了(0123是四層,1234也是四層)。

總之在我看來:

有兩種說法:

  1. 高度就是深度
  2. 看層數:
    如果根結點第0,層數=深度=高度-1
    如果根結點第1,層數=深度=高度

舉個例子_(:3 」∠ )_:

在這裡插入圖片描述  0

層數從第0層開始從第1層開始
最大層數45
深度45
高度(高度=深度)45
高度(數層數)55

補充:

根節點在第0層時候,按照北大資料結構視訊的說法就是高度數結點數,深度數路徑。從A到G,節點是5層,中間有4段路徑,所以深度4,高度5。
其實也可以理解為數高度時候葉子結點從1開始數。因此空數高度0,只有一個根節點高度1。

但是在清華大學 鄧俊輝資料結構書中如下:
在這裡插入圖片描述
這本書中可以看出數高度時候葉子結點是從0開始的,因此空數高度-1,只有一個根節點高度0。



結點的高度和深度

在這裡插入圖片描述
結點的深度也是從根結點開始數,是第幾層也決定於根結點在第0層還是第1層。根結點的高度則取決於它的子樹,該節點子樹中最遠的那個葉子結點作為1開始數。

例如對於BCD三個點:

B的子樹是C和D,數B的高度時候,B的子樹中離B最遠的葉子節點是G,所以G高度為1,B高度4D高度3。但是C是葉子節點,C沒有真子樹,C高度就是1

在這裡插入圖片描述  0

BCD高度(葉子節點>=0)4 1 34 1 3
BCD高度(葉子節點>0)3 0 23 0 2
BCD深度1 2 22 3 3

https://blog.csdn.net/qq_36667170/article/details/84142019 轉載內容結束

 

相關文章