一、樹的定義
樹形結構是一類重要的非線性結構。樹形結構是結點之間有分支,並具有層次關係的結構。它非常類似於自然界中的樹。
樹的遞迴定義:
樹(tree)是n(n≥0)個結點的有限集t,t為空時稱為空樹,否則它滿足如下兩個條件:
(1)有且僅有乙個特定的稱為根(root)的結點;
(2)其餘的結點可分為m(m≥0)個程式設計客棧互不相交的子集tl,t2,…,tm,其中每個子集本身又是一棵樹,並稱其為根的子樹(subree)。
二、二叉樹的定義
二叉樹是由n(n≥0)個結點組成的有限集合、每個結點最多有兩個子樹的有序樹。它或者是空集,或者是由乙個根和稱為左、右子樹的兩個不相交的二叉樹組成。
特點:(1)二叉樹是有序樹,即使只有乙個子樹,也必須區分左、右子樹;
(2)二叉樹的每個結點的度不能大於2,www.cppcns.com只能取0、1、2三者之一;
(3)二叉樹中所有結點的形態有5種:空結點、無左右子樹的結點、只有左子樹的結點、只有右子樹的結點和具有左右子樹的結點。
三、二叉樹的性質
性質1:二叉樹的第i層上最多有個結點。
性質2:深度為h的二叉樹上最多有-1個結點。
性質3:具有n個結點的二叉樹的高度不小於的最大整數。
性質4:任意一棵二叉樹中,如果葉子結點的個數為n0,度為2的結點的個數為n2,則必然有n0=n2+1。
滿二叉樹:若深度為h的二叉樹,恰好具有-1個結點,則稱為滿二叉樹。
完全二叉樹:若一棵具有n個結點的二叉樹的邏輯結構與滿二叉樹的前n個結點的邏輯結構完全相同,則稱該二叉樹為完全二叉樹
擴充二叉樹:除葉子結點外,其餘結點都必須有兩個孩子的二叉樹。
四、二叉樹的儲存結構
二叉樹的存程式設計客棧儲結構有順序儲存結構、鏈式儲存結構
順序儲存:結構採用一維陣列儲存的。根據二叉樹的性質6可計算出雙親結點、左右孩子結點的下標。因此滿二叉樹、完全二叉樹的儲存可採用一維陣列,把結點按從上到下、從左到右的順序存放在陣列中,結點之間的關係可由性質6的公式計算得到。
鏈式儲存:結構採用鍊錶儲存二叉樹中的資料元素,用鏈建立二叉樹中結點之間的關係。二叉樹最常用的鏈式儲存結構是二叉鏈,每個結點包含三個域,分別是資料元素域data、左孩子鏈域lchild和右孩子鏈域rchild。與單鏈表帶頭結點和不帶頭結點的兩種情況相似,二叉鏈儲存結構的二叉樹也有帶頭結點和不帶頭結點兩種
五、二叉樹的操作
python資料結構之二叉樹的建立例項
python資料結構之二叉樹的遍歷例項
python資料結構之二叉樹的統計與轉換例項
本文標題: python資料結構樹和二叉樹簡介
本文位址: /jiaoben/python/107894.html
資料結構 樹和二叉樹
第一節 二叉樹的定義與基本操作 定義 我們把滿足以下兩個條件的樹型結構叫做二叉樹 binary tree 1 每個結點的度都不大於2 2 每個結點的孩子結點次序不能任意顛倒。由定義得出 二叉樹的每個結點只能含有0 1或2個孩子,且有左右之分。1 二叉樹的五種基本形態 2 二叉樹性質 性質1 二叉樹第...
資料結構 樹和二叉樹
定義 二叉樹是n n 0 個節點的有限集合,該集合或者為空集 稱為空二叉樹 或者由乙個根節點和兩棵互不相交的 分別稱為根節點的左子樹和右子樹的二叉樹組成。特點 每個節點最多有兩棵子樹 二叉樹是有序的,其次序不能任意顛倒 斜樹 1.所有節點都只有左子樹的二叉樹稱為左斜樹 2.所有節點都只有右子樹的二叉...
資料結構 樹和二叉樹
一 樹的邏輯結構 1 樹的定義採用遞迴方法 2 樹的基本術語 結點的度 結點所擁有的子樹的個數 樹的度 樹中各結點度的最大值 葉子結點 度為0的結點 終端結點 分支結點 度不為0的結點 非終端結點 結點所在層數和高度 層序編號 從上到下,從左到右 有序樹 無序樹 如果一顆樹中結點的各子樹從左到右是有...