樹的定義:一棵樹是由n(n>0)個元素組成的有限集合赊锚。

(1)每個元素稱之為結點(node)。

(2)有一個特定的結點酱床,稱為根結點或樹根(root)羊赵。

(3)除根結點外,其余結點能分成m(m>=0)個互不相交的有限集合T_{0} 扇谣,T_{1} ………T_{m-1} 昧捷。其中的每個子集又都是一棵樹,這些集合稱為這棵樹的子樹罐寨。

樹的基本概念:

(1)樹是遞歸定義的靡挥。

(2)一棵樹中至少有一個結點。這個結點就是根結點鸯绿,它沒有前驅(qū)跋破,其余每個結點都有唯一的一個前驅(qū)結點簸淀。每個結點可以有0或多個后繼結點。因此樹雖然是非線性結構毒返,但也是有序結構租幕,至于前驅(qū)后繼結點是哪個,還要看樹的遍歷方法拧簸。

(3)一個結點的子樹個數(shù)劲绪,稱為這個結點的度(degree);度為0的結點稱為葉結點(樹葉leaf)狡恬;度不為0的結點稱為分支結點珠叔;根以外的分支結點又稱為內(nèi)部結點蝎宇;樹中各結點的度的最大值稱為這棵樹的度弟劲。

(4)在用圖形表示的樹形結構中,對兩個用線段(樹枝)連接的相關聯(lián)的結點姥芥,稱上端結點為下端結點的父結點兔乞,稱下端結點為上端結點的子結點。稱同一個父結點的多個子結點為兄弟結點凉唐。稱從根結點到某個子結點所經(jīng)過的所有結點為這個子結點的祖先庸追。稱從某個結點為根的子樹中的任一結點都是該結點的子孫。

(5)定義一棵樹的根結點的層次(level)為0台囱,其他結點的層次等于它的父結點層次加一淡溯。一棵樹中所有的結點的層次的最大值稱為樹的深度。

(6)對于樹中任意兩個不同的結點簿训,如果從一個結點出發(fā)咱娶,自上而下沿著樹中連著結點的線段能到達另一結點,稱他們之間存在一條路徑强品”煳辏可用路徑所經(jīng)過的所有結點序列表示路徑,路徑的長度等于路徑上的結點個數(shù)減一的榛。注意琼了,不同子樹上的結點之間不存在路徑,從根結點出發(fā)夫晌,到樹中其他結點一定存在著一條路徑雕薪。

(7)森林(forest)是m(m>=0)棵互不相交的樹的集合。

樹的存儲結構:

方法一:數(shù)組晓淀,稱為“父親表示法”所袁。

const int m=10;//樹的結點數(shù)

struct node{

int data,parent;//數(shù)據(jù)域,指針域

}tree[m];

優(yōu)缺點:利用了樹中除根結點之外每個結點都有唯一的父結點這個性質(zhì)要糊,很容易找到樹根纲熏,但找孩子時需要遍歷整個線性表妆丘。

方法二:樹形單鏈表結構,稱為孩子表示法局劲,每個結點包括一個數(shù)據(jù)域和一個指針域(指向若干子結點)勺拣。假設樹的度為10,樹的結點僅存放字符鱼填,則這棵樹的數(shù)據(jù)結構定義如下:

const int m=10;

struct node;

node *tree;

struct node{

char data;

tree child[m];

};

tree t;

缺點:只能從父結點遍歷到子結點药有,不能從子結點返回到它的父結點(可以多定義一個指針存儲父結點)

方法三:樹形雙鏈表結構,稱為父親孩子表示法苹丸,每個結點包括一個數(shù)據(jù)域和兩個指針域(一個指向若干子結點愤惰,一個指向父結點):

const int m=10;

struct node;

node *tree;

struct node{

char data;

tree child[m];

tree father;

};

tree t;

方法四:二叉樹型表示法,稱為孩子兄弟表示法赘理,是雙鏈表結構宦言,每個結點包括一個數(shù)據(jù)域,兩個指針域(一個指向該結點的第一個孩子結點商模,一個指向該結點的下一個兄弟結點):

struct node;

node *tree;

struct node{

char data;

tree firstchild,next;

};

tree t;

樹的遍歷:

1.先序遍歷奠旺,根左右

2.后序遍歷,左右根

3.層次遍歷施流,廣搜

4.葉結點遍歷响疚,leaf

二叉樹:

五種基本形態(tài)

性質(zhì):

1.在二叉樹的第i層最多有二的i-1次方個結點(i>=1)

2.深度為k的二叉樹至多有2^k-1 個結點(k>=1)

3.對任意一棵二叉樹,如果其葉結點數(shù)為n_{0} 瞪醋,度為2的結點數(shù)為n_{2} 忿晕,則一定滿足:n_{0} +n_{2} +1。

4.具有n個結點的完全二叉樹的深度為floor(\log_2^n)+1银受。

5.對于一棵n個結點的完全二叉樹践盼,對任一個結點(編號為i)有:

(1)如果i=1,則結點i為根蚓土,無父結點宏侍;如果i>1,則其父結點編號為i/2蜀漆。

如果2*i>n谅河,則結點i無左孩子(當然也無右孩子,因為結點i為葉結點)确丢;否則左孩子編號為2*i绷耍。

(2)如果2*i+1>n,則結點i無右孩子;否則右孩子編號為2*i+1鲜侥。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末褂始,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子描函,更是在濱河造成了極大的恐慌崎苗,老刑警劉巖狐粱,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胆数,居然都是意外死亡肌蜻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門必尼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒋搜,“玉大人,你說我怎么就攤上這事判莉《雇欤” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵券盅,是天一觀的道長帮哈。 經(jīng)常有香客問我,道長渗饮,這世上最難降的妖魔是什么但汞? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮互站,結果婚禮上,老公的妹妹穿的比我還像新娘僵缺。我一直安慰自己胡桃,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布磕潮。 她就那樣靜靜地躺著翠胰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪自脯。 梳的紋絲不亂的頭發(fā)上之景,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音膏潮,去河邊找鬼锻狗。 笑死,一個胖子當著我的面吹牛焕参,可吹牛的內(nèi)容都是我干的轻纪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼叠纷,長吁一口氣:“原來是場噩夢啊……” “哼刻帚!你這毒婦竟也來了?” 一聲冷哼從身側響起涩嚣,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤崇众,失蹤者是張志新(化名)和其女友劉穎掂僵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顷歌,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡看峻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了衙吩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片互妓。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坤塞,靈堂內(nèi)的尸體忽然破棺而出冯勉,到底是詐尸還是另有隱情,我是刑警寧澤摹芙,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布灼狰,位于F島的核電站,受9級特大地震影響浮禾,放射性物質(zhì)發(fā)生泄漏交胚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一盈电、第九天 我趴在偏房一處隱蔽的房頂上張望蝴簇。 院中可真熱鬧,春花似錦匆帚、人聲如沸熬词。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽互拾。三九已至,卻和暖如春嚎幸,著一層夾襖步出監(jiān)牢的瞬間颜矿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工嫉晶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骑疆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓车遂,卻偏偏與公主長得像封断,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舶担,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • B樹的定義 一棵m階的B樹滿足下列條件: 樹中每個結點至多有m個孩子坡疼。 除根結點和葉子結點外,其它每個結點至少有m...
    文檔隨手記閱讀 13,183評論 0 25
  • 編譯環(huán)境:python v3.5.0, mac osx 10.11.4 前述內(nèi)容: 線性表 隊列 堆棧 線性結構...
    擲骰子的求閱讀 2,417評論 1 7
  • 樹的定義與基本術語 ??樹型結構是一類重要的非線性數(shù)據(jù)結構衣陶,其中以樹和二叉樹最為常用柄瑰,是以分支關系定義的層次結構闸氮。...
    java技術分享師閱讀 1,079評論 0 1
  • 原文鏈接 B樹 1.前言: 動態(tài)查找樹主要有:二叉查找樹(Binary Search Tree),平衡二叉查找樹(...
    非典型程序員閱讀 1,148評論 0 3
  • B樹 1.前言: 動態(tài)查找樹主要有:二叉查找樹(Binary Search Tree)教沾,平衡二叉查找樹(Balan...
    鐵甲依然在_978f閱讀 1,443評論 0 4