數據結構課上筆記10

?

樹的定義:樹(Tree)是 n(n≥0)個結點的有限集。若 n=0,稱為空樹;若 n > 0,則它滿足如下兩個條件: ?

(1) ?有且僅有一個特定的稱為根 (Root) 的結點; ?

(2) ?其余結點可分為 m (m≥0) 個互不相交的有限集 T1, T2, T3, …, Tm, 其中每一個集合本身又是一棵樹,并稱為根的子樹 (SubTree)。

顯然,樹的定義是一個遞歸的定義。

樹的一些術語:

  • 結點的度(Degree):結點的子樹個數;
  • 樹的度:樹的所有結點中最大的度數;
  • 葉結點(Leaf):度為0的結點;
  • 父結點(Parent):有子樹的結點是其子樹的根節點的父結點;
  • 子結點/孩子結點(Child):若A結點是B結點的父結點,則稱B結點是A結點的子結點;
  • 兄弟結點(Sibling):具有同一個父結點的各結點彼此是兄弟結點;
  • 路徑和路徑長度:從結點n1到nk的路徑為一個結點序列n1,n2,...,nk。ni是ni+1的父結點。路徑所包含邊的個數為路徑的長度;
  • 祖先結點(Ancestor):沿樹根到某一結點路徑上的所有結點都是這個結點的祖先結點;
  • 子孫結點(Descendant):某一結點的子樹中的所有結點是這個結點的子孫;
  • 結點的層次(Level):規定根結點在1層,其他任一結點的層數是其父結點的層數加1;
  • 樹的深度(Depth):樹中所有結點中的最大層次是這棵樹的深度;

將樹中節點的各子樹看成從左至右是有次序的(即不能互換),則稱為該樹是有序樹,否則稱為無序樹

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

?

二叉樹

?

在計算機科學中,二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用于實現二叉查找樹和二叉堆。

?

雖然二叉樹與樹概念不同,但有關樹的基本術語對二叉樹都適用。

?

二叉樹結點的子樹要區分左子樹和右子樹,即使只有一 棵子樹也要進行區分,說明它是左子樹,還是右子樹。樹當 結點只有一個孩子時,就無須區分它是左還是右。

?

注意:盡管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形。

一些性質:

在二叉樹的第 i 層上至多有? 個結點 (i ≥1)。

證明:每個節點至多兩個孩子,每一層至多比上一層多一倍的結點,根為1.

?

深度為 k 的二叉樹至多有 個結點(k ≥1)。

證明:把每一層最大節點加起來即可

?

對任何一棵二叉樹 T,如果其葉子數為 n0,度為 2的結點數為 n2,則 n0 = n2 + 1。

證明:對于一個只有根的樹,n0 = n2 + 1成立。1=0+1

我們把一個葉子節點換成度為2的結點:

黑色節點原來為葉子節點

我們發現,度為2的結點數加1(黑色節點);葉子節點數加1(原來的去掉,新增兩個);對于式子n0 = n2 + 1沒影響,還是成立。

?

我們把葉子節點換成度為1的結點,比如沒有右孩子。

我們發現,度為2的結點數沒變。葉子節點數沒變(減了一個加了一個)

所以,不管你怎么換,公式都成立。(佛系證明)

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445501.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pandasStudyNoteBook

pandas 入門培訓 pandas簡介 - 官網鏈接:http://pandas.pydata.org/ - pandas pannel data data analysis - Pandas是python的一個數據分析包 , Pandas最初被作為金融數據分析工具而開發出來,因此,pandas為時間序列分析提供了很好的支持 …

最大搜索子樹

給定一個二叉樹的頭結點,返回最大搜索子樹的大小。 我們先定義結點: public static class Node {public int value;public Node left;public Node right;public Node(int data) {this.value data;}} 分析: 直接判斷每個節點左邊小右邊大是…

二叉樹最長路徑

分析: 暴力求每一段距離也可。 對于以本節點為根的二叉樹,最遠距離有三種可能: 1)最遠路徑來自左子樹 2 )最遠路徑來自右子樹(圖示與左子樹同理) 3)最遠路徑為左右子樹距離根最遠…

判斷完全二叉樹

完全二叉樹的定義: 一棵二叉樹,除了最后一層之外都是完全填充的,并且最后一層的葉子結點都在左邊。 https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fraladdin 百度定義 思路:層序遍歷二叉樹 如果…

判斷二叉搜索樹

二叉查找樹(Binary Search Tree),(又:二叉搜索樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小于…

劍指offer_01

文章目錄[toc]第一章 面試流程1.1 面試官談面試1.2 面試3種形式1.3 面試的3個環節第一章 面試流程 1.1 面試官談面試 初級的程序員談算法和數據結構,高級的程序員談項目經驗要對公司近況和項目情況了解不要緊張,不要馬上上手寫代碼 1.2 面試3種形式 …

判斷平衡二叉樹

平衡二叉樹(Balanced Binary Tree)具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1。并且左右兩個子樹都是一棵平衡二叉樹 (不是我們平時意義上的必須為搜索樹) 判斷一棵樹是否為平衡二叉樹&am…

劍指offer_02

文章目錄第二章 面試需要的基礎知識1.1 面試官談基礎知識1.2 編程語言1.3 數據結構1.4 算法和數據操作第二章 面試需要的基礎知識 1.1 面試官談基礎知識 數據結構和算法,編程能力,部分數學能力,問題分析和推理能力編程基礎,計算…

求完全二叉樹的結點個數

第一次見這個題,看時間小于O(N)。。。。。 只能是二分啊。 但是怎么二分,條件是什么,真的想不到。 后來知道了,我們要找最深一層最右邊那個結點。借此確定結點個數。 我們知道,滿二叉樹的結點個數和深度是有公式的&a…

劍指offer_03

文章目錄第三章 高質量代碼1.1 面試官談高質量代碼1.2 代碼的規范性1.3 代碼的完整性1.4 代碼的魯棒性第三章 高質量代碼 1.1 面試官談高質量代碼 代碼應該考慮異常狀況和垃圾回收問題,不能忽視邊界情況變量,函數命名應該要統一,備注要恰到…

劍指offer_04

文章目錄第四章 解決面試題的思路1.1 面試官談面試思路1.2 畫圖讓問題抽象化1.3 舉例讓抽象問題具體化1.4 分解讓復雜問題具體化第四章 解決面試題的思路 1.1 面試官談面試思路 編程前講自己的思路是一項考核指標,不能一開始就變成,面試的時候應該和面…

先序中序后序兩兩結合重建二叉樹

遍歷是對樹的一種最基本的運算,所謂遍歷二叉樹,就是按一定的規則和順序走遍二叉樹的所有結點,使每一個結點都被訪問一次,而且只被訪問一次。由于二叉樹是非線性結構,因此,樹的遍歷實質上是將二叉樹的各個結…

劍指offer_05

文章目錄第五章 優化時間和空間效率1.1 面試官談效率1.2 時間效率1.3 時間效率和空間效率的平衡第五章 優化時間和空間效率 1.1 面試官談效率 1.時間和空間復雜度是寫程序的時候,我們需要分析的,最好每次寫完代碼后自己都可以將程序的時間和空間復雜度…

先序中序數組推后序數組

二叉樹遍歷 所謂遍歷(Traversal)是指沿著某條搜索路線,依次對樹中每個結點均做一次且僅做一次訪問。訪問結點所做的操作依賴于具體的應用問 題。 遍歷是二叉樹上最重要的運算之一,是二叉樹上進行其它運算之基礎。 從二叉樹的遞歸定義可知,一…

劍指offer_06

文章目錄第六章 面試中的各項能力1.1 面試官談能力1.2 溝通能力和學習能力1.3 知識遷移能力1.4 抽象建模能力1.5 發散思維能力第六章 面試中的各項能力 1.1 面試官談能力 1.禮貌平和,不卑不亢的和面試官溝通;邏輯清楚,詳略得到的介紹項目經…

數據結構課上筆記11

滿二叉樹 (Full binary tree) 除最后一層無任何子節點外,每一層上的所有結點都有兩個子結點二叉樹。 國內教程定義:一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果一個二叉樹…

數據結構和算法(01)--- 算法復雜度

文章目錄算法時間復雜度算法時間復雜度 要判斷算法的好壞,可以從時間方面進行分析。算法運行的越快,所用的時間越短則算法越好。但是同一個算法在不同的平臺上的運行時間不同。那么又該如何進行評判呢?我們采用時間復雜度進行衡量。 1.算法時…

數據結構課上筆記12

二叉樹的存儲結構 順序存儲結構 完全二叉樹:用一組地址連續的 存儲單元依次自上而下、自左至右存 儲結點元素,即將編號為 i 的結點元 素存儲在一維數組中下標為 i –1 的分量中。 一般二叉樹:將其每個結點與完 全二叉樹上的結點相對照&…

kaggle(01)-泰坦尼克號問題

經典又兼具備趣味性的Kaggle案例泰坦尼克號問題 大家都熟悉的『Jack and Rose』的故事,豪華游艇倒了,大家都驚恐逃生,可是救生艇的數量有限,無法人人都有,副船長發話了『lady and kid first!』&#xff0c…

數據結構課上筆記13

樹存儲結構 父節點表示法 數據域:存放結點本身信息。 雙親域:指示本結點的雙親結點在數組中的位置。 對應的樹: /* 樹節點的定義 */ #define MAX_TREE_SIZE 100typedef struct{TElemType data;int parent; /* 父節點位置域 */ } PTNode;type…