<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Q:什麼是樹
A:樹是一種 非線性 的資料結構,它是由 n ( n>=0 )個有限結點組成一個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。
Q:樹有什麼特點
有一個特殊的結點,稱為根結點,根節點沒有前驅結點。
除根節點外,其餘結點被分成M(M>0)個互不相交的集合T1、T2、……、Tm,其中每一個集合Ti(1<= i <= m)又是一棵結構與樹類似的子樹。每棵子樹的根結點有且只有一個前驅,可以有0個或多個後繼。
樹是遞迴定義的
對於樹的定義還需要強調兩點:
當n>0時,根結點是唯一的,不可能存在多個根結點。資料結構中的樹是隻能有一個根結點。
當m>0時,子樹的個數沒有限制,但它們一定是互不相交的。像下圖中的結構就不符合樹的定義,因為它們都有相交的子樹。
節點的度:一個節點含有的子樹的個數稱為該節點的度; 如上圖:A的為3
葉節點:度為0的節點稱為葉節點; 如上圖:I,G,K,G,L,M節點為葉節點
非終端節點或分支節點:度不為0的節點; 如上圖:B、D、C、E、F等節點為分支節點
雙親節點或父節點:若一個節點含有子節點,則這個節點稱為其子節點的父節點; 如上圖:A是B的父節點
孩子節點或子節點:一個節點含有的子樹的根節點稱為該節點的子節點; 如上圖:B是A的孩子節點
兄弟節點:具有相同父節點的節點互稱為兄弟節點; 如上圖:B、C是兄弟節點
樹的度:一棵樹中,最大的節點的度稱為樹的度; 如上圖:樹的度為3
節點的層次:從根開始定義起,根為第1層,根的子節點為第2層,以此類推
樹的高度或深度:樹中節點的最大層次; 如上圖:樹的高度為4
節點的祖先:從根到該節點所經分支上的所有節點;如上圖:A是所有節點的祖先
子孫:以某節點為根的子樹中任一節點都稱為該節點的子孫。如上圖:所有節點都是A的子孫
森林:由m棵互不相交的樹的集合稱為森林
說到儲存結構,自然就會想到我們前面講過的順序儲存和鏈式儲存兩種結構。
順序儲存結構:樹中某個結點的孩子可以有多個,若將樹中所有結點儲存到陣列中,結點的儲存位置無法直接反應其邏輯關係,因此:簡單的順序儲存結構是不能滿足樹的實現要求的
鏈式儲存結構:鏈式儲存結構的特點,完全可以實現對樹的儲存結構的表示。
表示方式:實際中樹有很多種表示方式, 如:雙親表示法,孩子表示法、孩子兄弟表示法等等。我們這裡就簡單的瞭解其中最常用的孩子兄弟表示法。
程式碼演示
typedef int DataType; struct Node { struct Node* _firstChild1; // 第一個孩子結點 struct Node* _pNextBrother; // 指向其下一個兄弟結點 DataType _data; // 結點中的資料域 };
影象演示
Q:什麼是二元樹
A:二元樹是 n 個結點的有限集合。該集合或者為空集(空二元樹)或者由一個根結點和兩棵互不相交的,分別稱為根結點的左子樹和右子樹的二元樹組成。
Q:二元樹有什麼特點
每個結點最多有兩棵子樹,二元樹不存在度大於2的結點。左子樹和右子樹是有順序的,次序不能任意顛倒。即使樹中某結點只有一棵子樹,也要區分左子樹還是右子樹。
Q:二元樹有什麼基本形式
空二元樹只有一個根節點根節點只有左子樹根節點只有右子樹根節點既有左子樹又有右子樹
Q:特殊的二元樹有哪些
(1)滿二元樹:在一顆二元樹中,如果所有分支結點都存在左子樹和右子樹,並且所有葉子都在同一層上,這樣的二元樹稱為滿二元樹。如果一個二元樹的層數為K,且結點總數是(2^k) -1 ,則它就是滿二元樹。
(2)完全二元樹:對於一顆具有 n 個結點的二元樹按層序編號,如果編號為i(1<=i<=n)的結點與同樣深度的滿二元樹中編號為i的結點在二元樹中的位置完全相同,則稱這棵二元樹為完全二元樹。滿二元樹是一種特殊的完全二元樹。
性質一:在二元樹的第 i 層上至多有2^(i-1) 個結點。
性質二:深度為 k 的二元樹至多有2^(k)-1個結點。
性質三:對任何一棵二元樹, 如果度為0,其葉結點個數為 n0, 度為2的分支結點個數為 n2,則有n0=n2 + 1。
性質四:具有 n 個結點的完全二元樹的深度為
性質五:對於具有 n 個結點的完全二元樹,如果按照從上至下從左至右的陣列順序對所有節點從 0 開始編號,則對於任意結點 i 有:
如果 i=1,則結點 i 是二元樹的根,無雙親;如果 i>1,則其雙親是結點 1/2
如果 2i>n,則結點 i無左孩子;否則其左孩子是結點2i
如果 2i<n,則結點 i無右孩子;否則其右孩子是結點2i+1
順序結構儲存就是使用陣列來儲存,一般使用陣列只適合表示完全二元樹。因為不是完全二元樹會有空間的浪費。而現實中使用中只有堆才會使用陣列來儲存,二元樹順序儲存在物理上是一個陣列,在邏輯上是一顆二元樹。
二元樹每個結點最多有兩個孩子,所以為它分配一個資料域和兩個指標域是比較自然的想法,我們稱這樣的連結串列叫做二元連結串列。結點結構如圖:
程式碼演示
typedef int BTDataType; struct BinaryTreeNode { struct BinTreeNode* _pLeft; // 指向當前節點左孩子 struct BinTreeNode* _pRight; // 指向當前節點右孩子 BTDataType _data; // 當前節點值域 }
到此這篇關於C++超詳細講解樹與二元樹的文章就介紹到這了,更多相關C++樹與二元樹內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45