結構與算法:二叉樹與多叉樹

2020-12-04 知了V笑

一、樹狀結構

1、數組與鍊表

數組結構

數組存儲是通過下標方式訪問元素,查詢速度快,如果數組元素是有序的,還可使用二分查找提高檢索速度;如果添加新元素可能會導致多個下標移動,效率較低;

鍊表結構

鍊表存儲元素,對於元素添加和刪除效率高,但是遍曆元素每次都需要從頭結點開始,效率特別低;

樹形結構能同時相對提高數據存儲和讀取的效率。

2、樹結構概念

根節點:樹的根源,沒有父節點的節點,如上圖A節點;兄弟節點:擁有同一父節點的子節點。如圖B與C點;葉子節點:沒有子節點的節點。如圖DEFG節點;樹的高度:最大層數,如圖為3層;路徑:從root根節點找到指定節點的路線;樹形結構是一層次的嵌套結構。一個樹形結構的外層和內層有相似的結構,所以這種結構多可以遞歸的表示。經典數據結構中的各種樹狀圖是一種典型的樹形結構:一顆樹可以簡單的表示為根,左子樹,右子樹。 左子樹和右子樹又有自己的子樹。

二、二叉樹模型

樹的種類有很多,二叉樹(BinaryTree)是樹形結構的一個重要類型,每個節點最多只能有兩個子節點的一種形式稱為二叉樹,二叉樹的子節點分為左節點和右節點,許多實際問題抽象出來的數據結構往往是二叉樹形式。

完全二叉樹

二叉樹的所有葉子節點都在最後一層或者倒數第二層,而且最後一層的葉子節點在左邊連續,倒數第二 層的葉子節點在右邊連續,我們稱為完全二叉樹

滿二叉樹

當二叉樹的所有葉子節點都在最後一層,並且結點總數= 2^n -1 , n 為層數,則稱為滿二叉樹。

平衡二叉樹

平衡二叉樹指的是,任意節點的子樹的高度差的絕對值都小於等於1,並且左右兩個子樹都是一棵平衡二叉樹,常見的符合平衡樹的有,B樹(多路平衡搜索樹)、AVL樹(二叉平衡搜索樹)等。

二叉查找樹

二叉查找樹(BinarySearchTree)不但二叉樹,同時滿足一定的有序性:節點的左子節點比自己小,節點的右子節點比自己大。

三、多叉樹

多叉樹是指一個父節點可以有多個子節點,但是一個子節點依舊遵循一個父節點定律,通常情況下,二叉樹的實際應用高度太高,可以通過多叉樹來簡化對數據關係的描述。

例如:Linux文件系統,組織架構關係,角色菜單權限管理系統等,通常都基於多叉樹來描述。

相關焦點

  • 數據結構之樹和二叉樹
    01樹在計算機科學中,樹(英語:tree)是一種抽象數據類型(ADT)或是實現這種抽象數據類型的數據結構,用來模擬具有樹狀結構性質的數據集合。它是由n(n>0)個有限節點組成一個具有層次關係的集合。
  • 金賢敏團隊在光子晶片上演示指數加速的量子快速到達算法
    5月27日,上海交大金賢敏研究團隊在最新一期國際光學權威期刊《Optica》上以「Quantum fast hitting on glued trees mapped on a photonic chip」為題發表最新成果,實驗演示了粘合二叉樹結構上的量子快速到達指數加速算法。Optica是美國光學學會(OSA)旗下影響因子最高的期刊(9.2)。
  • 數據結構基礎:樹結構的學習筆記
    樹的高度:一棵樹的最大層次數稱為樹的高度或者樹的深度。有序(無序)樹:樹中的節點的各個子樹看成是從左到右有次序的,即不能交換,則稱為有序樹,否則為無序樹。二叉樹是n(n>=0)個節點的有限集合,它或者是空樹(n=0),或者是由一個根節點及兩棵不相交的、分別稱為左子樹、右子樹的二叉樹所組成。
  • 樹型結構詳解
    本文探討另外一種重要的數據結構----樹,其大部分時間可以保證操作的運行平均時間複雜度為O(logN),第一部分先來看一下樹的一些預備知識。首先看一下樹形結構的樣子,下圖代表的是樹型結構的一般形態:二叉樹是一棵樹,其中每個結點都不能有多於兩個子樹。下圖展示了一顆二叉樹:
  • 數據結構與算法分析筆記——B樹
    數據結構與算法分析筆記——B樹B樹AVL樹的特徵是,通過在插入或刪除時的微調,使得整個樹中任意節點的左子樹和右子樹之間的高度差不超過1。這樣的結果是,整棵樹的高度不至於太高。那麼,如果我們想要得到一棵更低的樹?該如何呢?
  • 四叉樹在碰撞檢測中的應用
    緣起《你被追尾了》中預告了加速碰撞檢測的算法——四叉樹(for 2D),所以本文就來學習一下.分析首先是為什麼要使用四叉樹進行優化,其實《你被追尾了》中已經說了,這裡簡單複習一下,碰撞檢測是一種比較昂貴的操作.
  • 樹的子結構
    樹的子結構題目描述輸入兩棵二叉樹A,B,判斷B是不是A的子結構。
  • 10張圖揭秘樹和森林!
    說起樹,想必大多數人第一反應都是二叉樹以及二叉樹的各種親戚,包括紅黑樹、平衡二叉樹等。但是其實除了二叉樹外,普通的樹結構在數據結構中也佔據著非常重要的一部分。
  • 數據結構與算法-2
    >(4)堆棧、(優先級)隊列(5)map、set(6)樹、圖(7)遞歸、分治、回溯(8)貪心算法(9)BFS、DFS(10)剪枝(11)二分查找(12)Trie樹(13)位運算(14)動態規劃(15)併查集
  • 10張圖揭秘樹和森林
    原文連結:https://mp.weixin.qq.com/s/WB3tRYIEm_ZURkUrTK_92w說起樹,想必大多數人第一反應都是二叉樹以及二叉樹的各種親戚,包括紅黑樹、平衡二叉樹等。但是其實除了二叉樹外,普通的樹結構在數據結構中也佔據著非常重要的一部分。
  • 圖解:計算機數據結構中的 6 種「樹」,你心中有數了嗎?
    非線性結構簡而言之,線性結構的對立面就是非線性結構。樹線性結構中節點是首位相接一對一關係,在樹結構中節點之間不再是簡單的一對一關係,而是較為複雜的一對多的關係,一個節點可以與多個節點發生關聯,樹是一種層次化的數據組織形式,樹在現實中是可以找到例子的,比如現實中的族譜,親戚之間的關係是層次關聯的樹形關係。
  • 拜託,別再問我什麼是 B+ 樹了
    為啥索引常用 B+ 樹作為底層的數據結構除了 B+ 樹索引,你還知道什麼索引為啥推薦自增 id 作為主鍵,自建主鍵不行嗎什麼是頁分裂,頁合併怎麼根據索引查找行記錄本文將會從以下幾個方面來講解 B+ 樹定義問題幾種常見的數據結構對比頁分裂與頁合併定義問題要知道索引底層為啥使用 B+ 樹,得看它解決了什麼問題,我們可以想想,日常我們用到的比較多的
  • 多圖,一文了解 8 種常見的數據結構
    ②、鍊表《算法(第 4 版)》一書中是這樣定義鍊表的:鍊表是一種遞歸的數據結構,它或者為空(null),或者是指向一個結點(node)的引用,該節點還有一個元素和一個指向另一條鍊表的引用。單向鍊表的缺點是只能從頭到尾依次遍歷,而雙向鍊表可進可退,既能找到下一個,也能找到上一個——每個節點上都需要多分配一個存儲空間。鍊表中的數據按照「鏈式」的結構存儲,因此可以達到內存上非連續的效果,數組必須是一塊連續的內存。
  • 資料庫原理基礎:設計B樹與B+樹的目的以及二者的優劣
    大家好,這裡是IT技術百貨,專注於有價值的IT技術知識分享;今天跟大家分享資料庫中的關鍵數據結構,B樹與B+樹什麼是B樹B樹是一個滿足以下條件的多叉樹,一棵m階B樹滿足如下條件:每一個節點最多有其他節點至少有m/2個節點包含t個子節點的節點包含有t-1個key根結點如果不是葉子節點,那麼至少要包含2個子結點每個節點的關鍵字從小到大排列,每一個關鍵字對應的左子樹都小於這個關鍵字,右子樹都大於這個關鍵字所有葉子節點都位於同一層以上限定規則略顯複雜,讀起來可能也比較繞口,簡言之就是限制每個節點的子結點個數,保證有序性以及每一個葉節點深度相同的三個特性;B樹是一種有序的數據結構
  • 2021屆秋招大廠高頻算法題匯總
    一些題外話,刷題的時候一遍可能會忘記,多刷個幾遍就好,但是時間上如果來不及,建議直接重複刷這些題目。這些題目基本上都是像字節、美團、滴滴、阿里等等這些大廠的真題。如果不信可以翻看牛客網截止某一段時間的面經,一個一個對照。
  • 樹模型(一)——樹的構造
    樹結構樹(tree)的數據結構是由n(n≥0)個有限結點組成的一個具有層次關係的集合。把它叫作「樹」是因為它看起來像一棵倒掛的樹,也就是說它是根在上而葉朝下的。樹是包含n(n≥0)個結點的有窮集,樹中的每個元素稱為結點(node);最頂層的叫作根結點或樹根(root)。
  • MySQL的索引結構為什麼使用B+樹?
    本文將從最普通的二叉查找樹開始,逐步說明各種樹解決的問題以及面臨的新問題,從而說明MySQL為什麼選擇B+樹作為索引結構。二叉查找樹(BST,Binary Search Tree),也叫二叉排序樹,在二叉樹的基礎上需要滿足:任意節點的左子樹上所有節點值不大於根節點的值,任意節點的右子樹上所有節點值不小於根節點的值。如下是一顆BST(圖片來源)。
  • 叉吊搬運車橫梁結構系統6σ 穩健優化設計
    劉 洋1 許志沛1 李 攀21 西南交通大學機械工程學院 成都 610031 2 成都立航科技有限公司 成都 610091摘要:論述某型叉吊搬運車橫梁結構系統基於6σ 理論的校核分析及優化,以提高其可靠性。傳統優化方法在設計過程中大多不考慮設計變量中不確定性因素的波動對設計結果的影響,穩健性較低,容易導致產品性能違反約束條件。
  • 大學計算機濟南大學智慧樹單元答案
    A:集合結構B:線性結構C:樹結構D:圖結構答案:【集合結構;線性結構;樹結構;圖結構】A:順序存儲結構B:樹型結構C:鏈式存儲結構D:圖結構答案:【順序存儲結構】3、具有「後進先出」特點的數據結構是( )。