樹!參天大樹!!!【C++數據結構】

今天我們來講一講數據結構之樹!!!

別問我爲什麼不講noi

OK,開始今天的講解吧!!

樹,是一種非線性的數據結構,用他可以很好的表達各個數據之間的層疊關係。樹在生活中也有很多示例,例如現在所說的:

百度網盤支持IPv6的網絡了!!

IPvn其實是一種網絡地址的存儲方式。像IPv4就是指地址有4位,像1,1,1,1就是一個Ipv4的完整地址。而n越多可存儲的用戶量就越多。而尋址就是尋找虛擬地址所在的現實地址併發送至現實地址中的手機。(例如實時聊天工具微信)而尋址的方式正好是一個先序遍歷樹的尋找方式。

樹的定義

一棵樹是由n(n>0)個元素組成的有限集合,其中:
(1)每個元素稱之爲node|節點
(2)有一個特定的節點,稱爲根節點,樹根(root)
(3)除根節點爲其餘節點能分成m(m>=0)個互不相交的有限集合,T0,T1,......,Tm1T_0,T_1,......,T_{m-1}
其中每一個節點子集都是一棵樹!!!例如樹根的孩子就是一棵樹。

基本概念

(1)樹是遞歸定義的(不用說了吧)
(2)一棵樹中至少有一個節點。如果只有一個節點,就是根節點。
在這裏插入圖片描述
上圖即爲一個只有一個節點的樹。
(3)一個節點的子樹(即這棵樹下面還有多少棵最頂層的樹)稱之爲這個節點的度(degree,例如上圖的點1即爲度爲0的節點。度爲0的節點稱之爲葉節點(leaf,上圖1節點)度不爲零的稱之爲分支節點,根以外的分支節點又稱爲內部節點,樹中各節點的度的最大值就是這棵樹的度)
是不是暈了?看圖:
在這裏插入圖片描述你品,仔細品,再品,多看看,才能學好。(雖然我有點看不懂
(4)在用圖形表示的樹中,對兩個用線段(樹枝)鏈接起來的相關聯的節點,上端節點是下端節點的爸爸,下端節點是上端節點的兒子!例如,上圖1是2和3的父親,2和3是1的兒子(爲什麼都是男的啊)如果在父親之上,就稱爲祖先,例如1是6的祖先,6是1的孫子!

怎麼感覺在罵人?

(5)定義一棵樹根節點的層次(level)爲0,其他節點的層次等於他父節點層次加一。這很好理解,1在level1,2和3在level2,這完全不是一個層次的啊!

又來了

(6)樹種任意兩個節點只要他們之間有通路,就稱爲他們之間存在一條路徑。路徑距離爲路上的節點個數減一。例如從2到3,經過2,1,3,-1即爲2距離。

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

神奇!竟然有空蕩蕩的森林,那還叫森林嗎??????(沒有一棵樹,即m==0)


好了樹的基礎知識學完,下次將會學習樹的存儲結構等實用方法,歡迎關注期待留言


小小慶祝下突破1200閱讀量…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章