日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

数据结构32:树存储结构

發(fā)布時(shí)間:2025/5/22 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构32:树存储结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

之前介紹的所有的數(shù)據(jù)結(jié)構(gòu)都是線性存儲結(jié)構(gòu)。本章所介紹的樹結(jié)構(gòu)是一種非線性存儲結(jié)構(gòu),存儲的是具有“一對多”關(guān)系的數(shù)據(jù)元素的集合。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

(A) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(B)? 圖 1 樹的示例


圖 1(A) 是使用樹結(jié)構(gòu)存儲的集合 {A,B,C,D,E,F,G,H,I,J,K,L,M} 的示意圖。對于數(shù)據(jù) A 來說,和數(shù)據(jù) B、C、D 有關(guān)系;對于數(shù)據(jù) B 來說,和 E、F 有關(guān)系。這就是“一對多”的關(guān)系。

將具有“一對多”關(guān)系的集合中的數(shù)據(jù)元素按照圖 1(A)的形式進(jìn)行存儲,整個(gè)存儲形狀在邏輯結(jié)構(gòu)上看,類似于實(shí)際生活中倒著的樹(圖 1(B)倒過來),所以稱這種存儲結(jié)構(gòu)為“樹型”存儲結(jié)構(gòu)。

樹的結(jié)點(diǎn)

結(jié)點(diǎn):使用樹結(jié)構(gòu)存儲的每一個(gè)數(shù)據(jù)元素都被稱為“結(jié)點(diǎn)”。例如,圖 1(A)中,數(shù)據(jù)元素 A 就是一個(gè)結(jié)點(diǎn);

父結(jié)點(diǎn)(雙親結(jié)點(diǎn))、子結(jié)點(diǎn)和兄弟結(jié)點(diǎn):對于圖 1(A)中的結(jié)點(diǎn) A、B、C、D 來說,A 是 B、C、D 結(jié)點(diǎn)的父結(jié)點(diǎn)(也稱為“雙親結(jié)點(diǎn)”),而 B、C、D 都是 A 結(jié)點(diǎn)的子結(jié)點(diǎn)(也稱“孩子結(jié)點(diǎn)”)。對于 B、C、D 來說,它們都有相同的父結(jié)點(diǎn),所以它們互為兄弟結(jié)點(diǎn)。

樹根結(jié)點(diǎn)(簡稱“根結(jié)點(diǎn)”):每一個(gè)非空樹都有且只有一個(gè)被稱為根的結(jié)點(diǎn)。圖 1(A)中,結(jié)點(diǎn)A就是整棵樹的根結(jié)點(diǎn)。

樹根的判斷依據(jù)為:如果一個(gè)結(jié)點(diǎn)沒有父結(jié)點(diǎn),那么這個(gè)結(jié)點(diǎn)就是整棵樹的根結(jié)點(diǎn)。

葉子結(jié)點(diǎn):如果結(jié)點(diǎn)沒有任何子結(jié)點(diǎn),那么此結(jié)點(diǎn)稱為葉子結(jié)點(diǎn)(葉結(jié)點(diǎn))。例如圖 1(A)中,結(jié)點(diǎn) K、L、F、G、M、I、J 都是這棵樹的葉子結(jié)點(diǎn)。

子樹和空樹

子樹:如圖 1(A)中,整棵樹的根結(jié)點(diǎn)為結(jié)點(diǎn) A,而如果單看結(jié)點(diǎn) B、E、F、K、L 組成的部分來說,也是棵樹,而且節(jié)點(diǎn) B 為這棵樹的根結(jié)點(diǎn)。所以稱 B、E、F、K、L 這幾個(gè)結(jié)點(diǎn)組成的樹為整棵樹的子樹;同樣,結(jié)點(diǎn) E、K、L 構(gòu)成的也是一棵子樹,根結(jié)點(diǎn)為 E。

注意:單個(gè)結(jié)點(diǎn)也是一棵樹,只不過根結(jié)點(diǎn)就是它本身。圖 1(A)中,結(jié)點(diǎn) K、L、F 等都是樹,且都是整棵樹的子樹。

知道了子樹的概念后,樹也可以這樣定義:樹是由根結(jié)點(diǎn)和若干棵子樹構(gòu)成的

空樹:如果集合本身為空,那么構(gòu)成的樹就被稱為空樹。空樹中沒有結(jié)點(diǎn)。

補(bǔ)充:在樹結(jié)構(gòu)中,對于具有同一個(gè)根結(jié)點(diǎn)的各個(gè)子樹,相互之間不能有交集。例如,圖 1(A)中,除了根結(jié)點(diǎn) A,其余元素又各自構(gòu)成了三個(gè)子樹,根結(jié)點(diǎn)分別為 B、C、D,這三個(gè)子樹相互之間沒有相同的結(jié)點(diǎn)。如果有,就破壞了樹的結(jié)構(gòu),不能算做是一棵樹。

結(jié)點(diǎn)的度和層次

對于一個(gè)結(jié)點(diǎn),擁有的子樹數(shù)(結(jié)點(diǎn)有多少分支)稱為結(jié)點(diǎn)的度(Degree)。例如,圖 1(A)中,根結(jié)點(diǎn) A 下分出了 3 個(gè)子樹,所以,結(jié)點(diǎn) A 的度為 3。

一棵樹的度是樹內(nèi)各結(jié)點(diǎn)的度的最大值。圖 1(A)表示的樹中,各個(gè)結(jié)點(diǎn)的度的最大值為 3,所以,整棵樹的度的值是 3。

結(jié)點(diǎn)的層次:從一棵樹的樹根開始,樹根所在層為第一層,根的孩子結(jié)點(diǎn)所在的層為第二層,依次類推。對于圖 1(A)來說,A 結(jié)點(diǎn)在第一層,B、C、D 為第二層,E、F、G、H、I、J 在第三層,K、L、M 在第四層。

一棵樹的深度(高度)是樹中結(jié)點(diǎn)所在的最大的層次。圖 1(A)樹的深度為 4。

如果兩個(gè)結(jié)點(diǎn)的父結(jié)點(diǎn)雖不相同,但是它們的父結(jié)點(diǎn)處在同一層次上,那么這兩個(gè)結(jié)點(diǎn)互為堂兄弟。例如,圖 1(A)中,結(jié)點(diǎn) G 和 E、F、H、I、J 的父結(jié)點(diǎn)都在第二層,所以之間為堂兄弟的關(guān)系。

有序樹和無序樹

如果樹中結(jié)點(diǎn)的子樹從左到右看,誰在左邊,誰在右邊,是有規(guī)定的,這棵樹稱為有序樹;反之稱為無序樹。

在有序樹中,一個(gè)結(jié)點(diǎn)最左邊的子樹稱為"第一個(gè)孩子",最右邊的稱為"最后一個(gè)孩子"

拿圖 1(A)來說,如果是其本身是一棵有序樹,則以結(jié)點(diǎn) B 為根結(jié)點(diǎn)的子樹為整棵樹的第一個(gè)孩子,以結(jié)點(diǎn) D 為根結(jié)點(diǎn)的子樹為整棵樹的最后一個(gè)孩子。

森林

由 m(m >= 0)個(gè)互不相交的樹組成的集合被稱為森林。圖 1(A)中,分別以 B、C、D 為根結(jié)點(diǎn)的三棵子樹就可以稱為森林。

前面講到,樹可以理解為是由根結(jié)點(diǎn)和若干子樹構(gòu)成的,而這若干子樹本身是一個(gè)森林,所以,樹還可以理解為是由根結(jié)點(diǎn)和森林組成的。用一個(gè)式子表示為:

Tree =(root,F)

其中,root 表示樹的根結(jié)點(diǎn),F 表示由 m(m >= 0)棵樹組成的森林。

樹的表示方法

除了圖 1(A)表示樹的方法外,還有其他表示方法:


? ? ? ? ? (A) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (B) 圖2 樹的表示形式
?

圖 2(A)是以嵌套的集合的形式表示的(集合之間絕不能相交,即圖中任意兩個(gè)圈不能相交)。

圖 2(B)使用的是凹入表示法(了解即可),表示方式是:最長條為根結(jié)點(diǎn),相同長度的表示在同一層次。例如 B、C、D 長度相同,都為 A 的子結(jié)點(diǎn),E 和 F 長度相同,為 B 的子結(jié)點(diǎn),K 和 L 長度相同,為 E 的子結(jié)點(diǎn),依此類推。

最常用的表示方法是使用廣義表的方式。圖 1(A)用廣義表表示為:

(A , ( B ( E ( K , L ) , F ) , C ( G ) , D ( H ( M ) , I , J ) ) )

總結(jié)

樹型存儲結(jié)構(gòu)類似于家族的族譜,各個(gè)結(jié)點(diǎn)之間也同樣可能具有父子、兄弟、表兄弟的關(guān)系。本節(jié)中,要重點(diǎn)理解樹的根結(jié)點(diǎn)和子樹的定義,同時(shí)要會計(jì)算樹中各個(gè)結(jié)點(diǎn)的度和層次,以及樹的深度。

轉(zhuǎn)載于:https://www.cnblogs.com/ciyeer/p/9044213.html

總結(jié)

以上是生活随笔為你收集整理的数据结构32:树存储结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。