數據結構基礎:樹結構的學習筆記

2021-01-17 IT技術分享社區

樹是n(n>=0)個節點的有限集合。當n=0時稱為空樹,當n>0 為非空樹,任何非空樹中,有且僅有一個根節點;其餘節點可分為m(m>=0)個互不相交的有限集合T1、T2 等,其中每一個集合都可以稱為一棵樹,稱為根節點的子樹。        雙親孩子、兄弟:節點的字數的根稱為該節點的孩子,該節點稱為其子節點的雙親。具有相同雙親的節點互為兄弟節點。如圖:A是根節點,B、C、D互為兄弟;B是E、F的父節點(雙親);E、F 互為兄弟節點。節點的度:一個節點下的子節點個數稱為節點的度。比如 A的度為3,D的度為1。葉子節點:是指度為0的節點,也被稱為終端節點。比如 C、E、F、G都是葉子節點。內部節點:度不為零的節點稱為分支節點或非終端節點。去掉根節點,分支節點稱為內部節點。比如:B、D。節點的層次:根節點A屬於第一層,依次類推。B屬於第二層,E屬於第三層。樹的高度:一棵樹的最大層次數稱為樹的高度或者樹的深度。有序(無序)樹:樹中的節點的各個子樹看成是從左到右有次序的,即不能交換,則稱為有序樹,否則為無序樹。二叉樹是n(n>=0)個節點的有限集合,它或者是空樹(n=0),或者是由一個根節點及兩棵不相交的、分別稱為左子樹、右子樹的二叉樹所組成。二叉樹中節點區分左子樹、右子樹,即便只有一個子樹的情況下也有標明是左子樹還是右子樹,普通樹則不區分;二叉樹中節點最大度為2,普通樹則沒有限制節點的度數。3、對任何一棵二叉樹,若其終端節點數為n,度為2的節點數為n2,則n=n2+14、具有n個節點的完全二叉樹的深度為(log2^n)+11、滿二叉樹:深度為k的二叉樹有2^(k-1)個節點,是滿二叉樹2、完全二叉樹:高度為k的二叉樹,除了第k層都是滿的,稱為完全二叉樹。滿二叉樹也是完全二叉樹。具有n個節點的完全二叉樹高度為 (log2^n) +13、非完全二叉樹:不滿足完全二叉樹的稱為非完全二叉樹。用一組地址連續的存儲單元存儲二叉樹的節點,必須把節點排成一個適當的線性序列,並且節點在這個序列中的相互位置可以反映出節點之間的邏輯關係順序存儲適合對完全二叉樹的存儲方式,既簡單又節省空間。對於一般二叉樹而言,因為在順序存儲結構中,以節點在存儲單元中的位置來表示節點之間的關係,所以存儲方式也必須按照完全二叉樹的方式存儲,這樣會造成空間上的浪費。最壞的情況,一個深度為h且只有h個節點的二叉樹(也是單枝樹)需要(2^h) -1 存儲單元.由於二叉樹中節點包含數據、左子樹根、右子樹根、雙親信息,因此可以用三叉鍊表或二叉鍊表來 存儲二叉樹,鍊表的頭指針指向二叉樹的根節點。遍歷是按某種策略訪問樹中的每個節點,僅訪問一次。對於含有n個節點的二叉樹遍歷算法的時間複雜度都是O(n).節點的路徑:從樹的一個節點到另一個節點之前的通路。節點的帶權路徑:節點到樹根之間的路徑長度*該節點的權重值。樹的帶權路徑長度為樹種所有葉子節點的帶權路徑長度之和。數值最小的就是哈夫曼樹。


IT技術分享社區


個人博客網站:https://programmerblog.xyz





Long-press QR code to transfer me a reward

As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.

相關焦點

  • 數據結構與算法分析筆記——B樹
    數據結構與算法分析筆記——B樹B樹AVL樹的特徵是,通過在插入或刪除時的微調,使得整個樹中任意節點的左子樹和右子樹之間的高度差不超過1。這樣的結果是,整棵樹的高度不至於太高。那麼,如果我們想要得到一棵更低的樹?該如何呢?
  • 數據結構之樹和二叉樹
    01樹在計算機科學中,樹(英語:tree)是一種抽象數據類型(ADT)或是實現這種抽象數據類型的數據結構,用來模擬具有樹狀結構性質的數據集合。它是由n(n>0)個有限節點組成一個具有層次關係的集合。
  • 圖解:計算機數據結構中的 6 種「樹」,你心中有數了嗎?
    本文首發個人技術微信公眾號,點擊閱讀全文數據結構這門課程是計算機相關專業的基礎課,數據結構指的是數據在計算機中的存儲、組織方式。我們在學習數據結構時候,會遇到各種各樣的基礎數據結構,比如堆棧、隊列、數組、鍊表、樹...這些基本的數據結構類型有各自的特點,不同數據結構適用於解決不同場景下的問題。
  • 我們到底該如何學習《數據結構與算法》
    前言:我們到底該不該學習算法與數據結構?1、真的應該學習這個問題本身就不是個問題,所有人都在強調數據結構與算法比較重要,但是好像平時也沒用到,無法直觀的去感受它的重要性,於是把學習重心放在了常見的哪些框架身上,似乎只要熟悉了哪些框架的API,編程就會所向披靡。
  • b樹和b+樹的區別是什麼?b+樹數據結構詳細介紹
    首頁 > 問答 > 關鍵詞 > b樹最新資訊 > 正文 b樹和b+樹的區別是什麼?b+樹數據結構詳細介紹 B樹即二叉搜索樹,所有非葉子結點至多擁有兩個兒子(Left和Right,所有結點存儲一個關鍵字,非葉子結點的左指針指向小於其關鍵字的子樹,右指針指向大於其關鍵字的子樹
  • 進化樹+基因結構+motif—1張圖全顯示!
    MEGA可以基於序列構建進化樹,並顯示進化樹,藉助GSDS可以把基因結構和進化樹合併顯示。
  • Java數據結構的線性結構和非線性結構,這篇足夠了
    數據結構與算法,可以說是程式設計師的靈魂。大家在找工作面試的時候,尤其是大網際網路公司面試的時候,數據結構與算法必問,想要學好數據結構,首先你要高效而愉快地學習,作為優秀的程式設計師它可以在海量數據計算的時候,依然保持高速地計算。
  • 學習筆記 核糖體的結構
    對於自己熟悉領域之外的東西,很多都停留在多年前學習教科書時形成的刻板印象。核糖體就是一個。
  • Roam 周報 #2020W47 樹狀結構 vs 網狀結構
    「創造階段」以網狀結構為主,此時遠程聯想、複雜決策、跨領域尋找解決方案,就像松鼠 🐿 在不同樹林 🌲 間反覆跳躍,網絡交織,尋找關聯。不同階段側重點不一樣,但並不代表「學習階段」就不能使用「網絡結構」,通常來說不同領域的兩棵樹存在相似之處,通過比喻/類比可以快速學習新事物。
  • Java數據結構之紅黑樹解析
    歡迎點讚評論+關注~~~~~~~如上圖,二叉查找樹極端情況下可能會變成一個單鍊表,這種查詢時間複雜度就變成O(n)了,紅黑樹在二叉查找樹的基礎上進行了自平衡。1.原理分析如上圖,紅黑樹具有以下特徵:每個節點要麼是黑色,要麼是紅色根節點是黑色每個葉子節點都是黑色的空結點(NIL結點)如果一個節點是紅色的,則它的子節點必須是黑色的從任一結點到其每個葉子的所有路徑都包含相同數目的黑色結點新插入節點默認為紅色,插入後需要校驗紅黑樹是否符合規則,不符合則需要進行平衡紅黑樹節點的增加刪除都需要保證滿足以上特徵,紅黑樹採取額多種方式來維護這些特徵
  • 龍池牡丹:數據結構是一種抽象的封裝
    平時我們說的鍊表無非就是把一些基本元素和指針做了融合,樹、圖也是把指針和一些基本元素融合後再外加一些流程,如函數。龍池牡丹表示python的dict,dict的key,value就是兩種相同或者不同的數據類型;dict還提供了一些函數,譬如get(),set()。
  • 樹型結構詳解
    關注一下又不會懷孕~樹型結構的基本概念
  • 結構與算法:二叉樹與多叉樹
    ,效率較低;鍊表結構鍊表存儲元素,對於元素添加和刪除效率高,但是遍曆元素每次都需要從頭結點開始,效率特別低;樹形結構能同時相對提高數據存儲和讀取的效率。如圖DEFG節點;樹的高度:最大層數,如圖為3層;路徑:從root根節點找到指定節點的路線;樹形結構是一層次的嵌套結構。一個樹形結構的外層和內層有相似的結構,所以這種結構多可以遞歸的表示。
  • 應對程式設計師面試,你必須知道的八大數據結構
    即便是對於一些非常基礎的工作來說,學習數據結構也是必須的。那麼,就讓我們先從一些基本概念開始入手。什麼是數據結構?簡單地說,數據結構是以某種特定的布局方式存儲數據的容器。這種「布局方式」決定了數據結構對於某些操作是高效的,而對於其他操作則是低效的。
  • 樹的子結構
    樹的子結構題目描述輸入兩棵二叉樹A,B,判斷B是不是A的子結構。
  • 數據結構框架概述
    數據結構(data structure)是帶有結構特性的數據元素的集合,它研究的是數據的邏輯結構和數據的物理結構以及它們之間的相互關係,並對這種結構定義相適應的運算,設計出相應的算法,並確保經過這些運算以後所得到的新結構仍保持原來的結構類型。簡而言之,數據結構是相互之間存在一種或多種特定關係的數據元素的集合,即帶「結構」的數據元素的集合。
  • 程式設計師要不要學習算法、數據結構、計算機原理等等基礎知識?
    程式設計師要不要學諸如算法、數據結構、網絡編程、計算機原理等等基礎課程?一直是碼農界經久不衰的話題。
  • 重學數據結構(七、圖)
    在線性表中,數據元素之間僅有線性關係,每個數據元素只有一個直接前驅和一個直接後繼;在樹形結構中,數據元素之間有著明顯的層次關係,並且每一層中的數據元素可能和下一層中的多個元素(即其孩子結點)相關,但只能和上一層中一個元素(即其雙親結點)相關; 而在圖結構中,結點之間的關係可以是任意的,圖中任意兩個數據元素之間都可能相關。
  • 網狀結構筆記工具是一陣風嗎?
    自從 6 月 12 日 Roam Research 開放註冊,這款年費 1000 元的筆記應用非但沒有讓人望而卻步,一次付費 500 美元的用戶還讓 Roam Research 在 48 小時內的進帳超過了過去兩年間的總收入。
  • MySQL的索引結構為什麼使用B+樹?
    前言在MySQL中,無論是Innodb還是MyIsam,都使用了B+樹作索引結構(這裡不考慮