python數(shù)據(jù)結(jié)構(gòu)樹和二叉樹簡介
一、樹的定義
樹形結(jié)構(gòu)是一類重要的非線性結(jié)構(gòu)。樹形結(jié)構(gòu)是結(jié)點之間有分支,并具有層次關(guān)系的結(jié)構(gòu)。它非常類似于自然界中的樹。
樹的遞歸定義:
樹(Tree)是n(n≥0)個結(jié)點的有限集T,T為空時稱為空樹,否則它滿足如下兩個條件:
(1)有且僅有一個特定的稱為根(Root)的結(jié)點;
(2)其余的結(jié)點可分為m(m≥0)個互不相交的子集Tl,T2,…,Tm,其中每個子集本身又是一棵樹,并稱其為根的子樹(Subree)。
二、二叉樹的定義
二叉樹是由n(n≥0)個結(jié)點組成的有限集合、每個結(jié)點最多有兩個子樹的有序樹。它或者是空集,或者是由一個根和稱為左、右子樹的兩個不相交的二叉樹組成。
特點:
(1)二叉樹是有序樹,即使只有一個子樹,也必須區(qū)分左、右子樹;
(2)二叉樹的每個結(jié)點的度不能大于2,只能取0、1、2三者之一;
(3)二叉樹中所有結(jié)點的形態(tài)有5種:空結(jié)點、無左右子樹的結(jié)點、只有左子樹的結(jié)點、只有右子樹的結(jié)點和具有左右子樹的結(jié)點。
三、二叉樹的性質(zhì)
性質(zhì)1:二叉樹的第i層上最多有個結(jié)點。
性質(zhì)2:深度為h的二叉樹上最多有-1個結(jié)點。
性質(zhì)3:具有n個結(jié)點的二叉樹的高度不小于的最大整數(shù)。
性質(zhì)4:任意一棵二叉樹中,如果葉子結(jié)點的個數(shù)為n0,度為2的結(jié)點的個數(shù)為n2,則必然有n0=n2+1。
滿二叉樹:若深度為h的二叉樹,恰好具有-1個結(jié)點,則稱為滿二叉樹。
完全二叉樹:若一棵具有n個結(jié)點的二叉樹的邏輯結(jié)構(gòu)與滿二叉樹的前n個結(jié)點的邏輯結(jié)構(gòu)完全相同,則稱該二叉樹為完全二叉樹
擴充二叉樹:除葉子結(jié)點外,其余結(jié)點都必須有兩個孩子的二叉樹。
四、二叉樹的存儲結(jié)構(gòu)
二叉樹的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)、鏈式存儲結(jié)構(gòu)
順序存儲:結(jié)構(gòu)采用一維數(shù)組存儲的。根據(jù)二叉樹的性質(zhì)6可計算出雙親結(jié)點、左右孩子結(jié)點的下標。因此滿二叉樹、完全二叉樹的存儲可采用一維數(shù)組,把結(jié)點按從上到下、從左到右的順序存放在數(shù)組中,結(jié)點之間的關(guān)系可由性質(zhì)6的公式計算得到。
鏈式存儲:結(jié)構(gòu)采用鏈表存儲二叉樹中的數(shù)據(jù)元素,用鏈建立二叉樹中結(jié)點之間的關(guān)系。二叉樹最常用的鏈式存儲結(jié)構(gòu)是二叉鏈,每個結(jié)點包含三個域,分別是數(shù)據(jù)元素域data、左孩子鏈域lChild和右孩子鏈域rChild。與單鏈表帶頭結(jié)點和不帶頭結(jié)點的兩種情況相似,二叉鏈存儲結(jié)構(gòu)的二叉樹也有帶頭結(jié)點和不帶頭結(jié)點兩種
五、二叉樹的操作
python數(shù)據(jù)結(jié)構(gòu)之二叉樹的建立實例
python數(shù)據(jù)結(jié)構(gòu)之二叉樹的遍歷實例
python數(shù)據(jù)結(jié)構(gòu)之二叉樹的統(tǒng)計與轉(zhuǎn)換實例
- Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹實現(xiàn)方法示例
- Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆實例
- Python數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹結(jié)構(gòu)定義與遍歷方法詳解
- python數(shù)據(jù)結(jié)構(gòu)之二叉樹的統(tǒng)計與轉(zhuǎn)換實例
- python數(shù)據(jù)結(jié)構(gòu)之二叉樹的遍歷實例
- python數(shù)據(jù)結(jié)構(gòu)之二叉樹的建立實例
- Python數(shù)據(jù)結(jié)構(gòu)樹與算法分析
相關(guān)文章
python線程鎖(thread)學(xué)習(xí)示例
python thread提供了低級別的、原始的線程以及一個簡單的鎖,下面提供一個python線程線程鎖(thread)學(xué)習(xí)示例,大家參考使用2013-12-12
python里讀寫excel等數(shù)據(jù)文件的6種常用方式(小結(jié))
這篇文章主要介紹了python里讀寫excel等數(shù)據(jù)文件的6種常用方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
淺談python中np.array的shape( ,)與( ,1)的區(qū)別
今天小編就為大家分享一篇python中np.array的shape ( ,)與( ,1)的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
使用Python Typing模塊提升代碼可讀性和健壯性實例探索
這篇文章主要為大家介紹了使用Python Typing模塊提升代碼可讀性和健壯性實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
Python數(shù)據(jù)結(jié)構(gòu)與算法中的棧詳解(3)
這篇文章主要為大家詳細介紹了Python中的棧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
python編寫簡易聊天室實現(xiàn)局域網(wǎng)內(nèi)聊天功能
這篇文章主要為大家詳細介紹了python編寫簡易聊天室實現(xiàn)局域網(wǎng)內(nèi)聊天功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07

