資料結構學習 樹

2021-09-24 15:21:18 字數 2217 閱讀 1997

是n個結點的有限集合。n=0時稱為空樹,在任意一棵非空樹中:(1)有且僅有乙個特定的稱為根的結點。(2)當n>1時,其餘結點可以分為m個互不相交的有限集合,其中每乙個集合本身又是一棵樹。在此,我們主要來學習二叉樹的應用。

​ 結點擁有的子樹數稱為結點的。度為0的結點稱為葉子結點或者終端結點。度不為0的結點稱為非終端結點或分支結點。除根結點之外,分支結點也稱為內部結點。樹的度是樹內各結點的度的最大值。

​ 結點子樹的根稱為該結點的孩子,相應的該結點稱為孩子的雙親。同乙個雙親的孩子之間互稱兄弟

​ 二叉樹是n個結點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根結點和兩棵不相交的、分別稱為根結點的左子樹和右子樹的二叉樹構成。

2.1、二叉樹的特點

​ (1)每個結點最多有兩棵子樹,所以二叉樹中不存在度大於2的結點。

​ (2)左子樹和右子樹是有順序的,順序不能顛倒。

2.2、介紹幾種特殊二叉樹

​ 1、斜樹

​ 所有結點都只有左子樹的二叉樹叫左斜樹。所有結點都是只有右子樹的二叉樹叫右斜樹。這兩者統稱斜樹

​ 2、滿二叉樹

​ 在一棵二叉樹中,如果所有分支結點都存在左子樹和右子樹,並且所有葉子結點都在同一層上,這樣的二叉樹就稱為滿二叉樹

​ 3、完全二叉樹

​ 對一顆具有n個結點的二叉樹按層編號,如果編號為i(1<=i<=n)的結點與同樣深度的滿二叉樹中編號為i的結點在二叉樹中位置完全相同,則這棵二叉樹稱為完全二叉樹

​ 首先,我們要明確*"完全"和「滿」*的差異,滿二叉樹一定是完全二叉樹,但完全二叉樹不一定是滿的。

​ 要判斷一棵二叉樹是否是完全二叉樹其實很簡單。先按層編號,當此二叉樹的編號和滿二叉樹的編號一樣時,此樹就為完全二叉樹,即使它不是滿二叉樹。

2.3、二叉樹的性質

​ (1) 在二叉樹的第i層上最多有2i-1 個節點 。(i>=1)

​ (2) 二叉樹中如果深度為k,那麼最多有2k-1個節點。(k>=1)

​ (3)n0=n2+1 n0表示度數為0的節點數,n2表示度數為2的節點數。

​ (4)在完全二叉樹中,具有n個節點的完全二叉樹的深度為[log2n]+1,其中[log2n]是向下取整。

2.3、二叉樹的幾種遍歷方式

​ 1、前序遍歷

​ 規則時若二叉樹為空,則空操作返回,否則先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹。如圖所示:遍歷的順序為abdghceif

​ 2、中序遍歷

​ 規則時若樹為空,則空操作返回,否則從根結點開始(注意並不是先訪問根結點),中序遍歷根結點的左子樹,然後是訪問根結點,最後是訪問根結點,最後中序遍歷右子樹。如圖所示:遍歷順序為:gdhbaeicf。

​ 3、後續遍歷

​ 規則是若樹為空,則空操作返回,否則從左到右先葉子後結點的方式訪問左右子樹,最後訪問根結點。

如圖所示:遍歷順序為ghdbiefca。

1、我們日常開發中哪些場景用到了樹這種資料結構?

2、還有哪些型別的樹?例如紅黑樹、霍夫曼樹等。

3、嘗試編碼實現一下二叉樹的幾種遍歷操作。

資料結構學習 樹

樹結構是二叉樹的擴充套件,二叉樹在乙個節點上只有兩個子節點,而樹結構在乙個節點上不只有兩個,可以有n個,n大於等於0,更具有一般意義。二叉樹的概念同樣適用於樹,如完全數,滿樹等,此外還有 有序樹 結點的各子樹從左到右是有次序的,即若交換各子樹相對位置會構成不同的樹。無序樹 結點的各子樹從左到右是無次...

資料結構學習

什麼是資料結構 對計算機記憶體中的資料的一種安排。資料結構有那些?優缺點?1.陣列 插入快 知道下標 查詢慢,刪除慢,大小固定 2.有序陣列 比無序的查詢塊,刪除和插入慢,大小固定 3.棧 吃多了吐 個人理解 4.佇列 吃多了拉 個人理解 5.鍊錶 插入快,刪除快,查詢慢 6.二叉樹 查詢 插入 刪...

資料結構學習

鍊錶 class listnode definit self,x self.val x 節點值 self.next none 後繼節點值 例項化節點 n1 listnode 4 節點head n2 listnode 5 n3 listnode 1 構建引用指向 n1.next n2 n2.next ...