開啓「樹」之旅

  咱們先來看一個例子。html

101116gr944pr21oug8lro.png
       這是什麼?是一個圖?不對,確切的說這是一棵樹。這哪裏像樹呢?不要着急咱們來變換一下。
100835alobvkhlozlk3ula.png
       是否是很像一棵倒掛的樹,也就是說它是根朝上,而葉子朝下的。不像?哈哈,看完下面這幅圖你就會以爲像啦。
100836yof5r93sf99coer5.png
       你可能會問:樹和圖有什麼區別?這個稱之爲樹的東西貌似和無向圖差很少嘛。不要着急,繼續往下看。樹其實就是不包含迴路的連通無向圖。你可能仍是沒法理解這其中的差別,舉個例子,以下。

 

100837qvf7y7bb9uqrjuhq.png         100837piei9iwrvvvergh9.png

 

       上面這個例子中左邊的是一棵樹,而右邊的是一個圖。由於左邊的沒有迴路,而右邊的存在1->2->5->3->1這樣的迴路。
       一、正是由於樹有着「不包含迴路」這個特色,因此樹就被賦予了不少特性。
       二、一棵樹中的任意兩個結點有且僅有惟一的一條路徑連通。
       三、一棵樹若是有n個結點,那麼它必定剛好有n-1條邊。
       在一棵樹中加一條邊將會構成一個迴路。樹這個特殊的數據結構在哪裏會用到呢?好比足球世界盃的晉級圖,家族的族譜圖、公司的組織結構圖、書的目錄、咱們 用的操做系統Windows、Liunx或者Mac中的「目錄(文件夾)」都是一棵樹。下面就是「啊哈C」這個軟件的目錄結構。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
C:\啊哈C
├─codes
├─core
│ ├─bin
│ ├─include
│ │ ├─ddk
│ │ ├─gdb
│ │ ├─gdiplus
│ │ ├─GL
│ │ └─sys
│ ├─lib
│ │ └─gcc
│ │ └─mingw32
│ │ └─4.7.1
│ │ ├─finclude
│ │ ├─include
│ │ │ └─ssp
│ │ ├─include-fixed
│ │ └─install-tools
│ │ └─include
│ ├─libexec
│ │ └─gcc
│ │ └─mingw32
│ │ └─4.7.1
│ │ └─install-tools
│ └─mingw32
│ ├─bin
│ └─lib
│ └─ldscripts
└─skin
       假如如今正處於libexec文件夾下,須要到gdiplus文件夾下。你必須先「向上」回到上層文件夾core,再進入include文件夾,最後才能進入gdiplus文件夾。由於一棵樹中的任意兩個結點(這裏就是文件夾)有且僅有惟一的一條路徑連通。
       爲了以後講解的方便,咱們這裏對樹進行一些定義。
       首先,樹是指任意兩個結點間有且只有一條路徑的無向圖。 或者說,只要是沒有迴路的連通無向圖就是樹。
       喜歡思考的同窗可能會發現同一棵樹能夠有多種形態,好比下面這個兩棵樹。
100837y34w3tt3t3ttkt3a.png         100838hwwwoqwt08w8tstw.png
       爲了肯定一棵樹的形態,在一棵樹中能夠指定一個特殊的結點——根。咱們在對一棵樹進行討論的時候,將樹中的每一個點稱爲結點,有的書中也稱爲節點。有一個 根的樹叫作有根樹(哎,這不是廢話嘛)。好比上方左邊這棵樹的樹根是1號結點,右邊這棵樹的樹根是3號結點。
       根又叫作根結點,一棵樹有且只有一個根結點。根結點有時候也稱爲祖先。既然有祖先,理所固然就有父親和兒子。好比上圖右邊這棵樹中3號結點是一、6和7 號結點的父親,一、6和7號結點是3號結點的兒子。同時1號結點又是2號結點的父親,2號結點是1號結點的兒子,2號結點與四、5號結點關係也顯而易見 了。
       父親結點簡稱爲父結點,兒子結點簡稱爲子結點。2號結點既是父結點也是子結點,它是1號結點的子結點,同時也是4和5號結點的父結點。另外若是一個結點 沒有子結點(即沒有兒子)那麼這個結點稱爲葉結點,例如四、五、6和7號結點都是葉結點。沒有父結點(即沒有父親)的結點稱爲根結點(祖先)。若是一個結 點既不是根結點也不是葉結點則稱爲內部結點。最後每一個結點還有深度,好比5號結點的深度是4。哎,終於囉嗦完了,寫的我汗都流出來了,沒有理解的請看下面 這幅插圖吧。
101124ky0n8mlglwn3vvnx.png

       說了這麼多你可能都沒有感覺到樹究竟有什麼好處。不要着急,請看下回——二叉樹。數據結構

   http://bbs.ahalei.com/thread-4684-1-1.htmlspa

相關文章
相關標籤/搜索