数据结构之树:树的介绍——9
生活随笔
收集整理的這篇文章主要介紹了
数据结构之树:树的介绍——9
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據結構之樹,介紹篇
樹的基本定義
- 介紹:樹(tree)是計算機中非常重要的數據結構,它的外形看起來像一顆倒掛著的的樹,使用樹這種結構可以描述生活中很多的事物,如族譜,單位的組織架構,xml,html的中屬性的關系,文件目錄,路由協議,某些數據庫的索引,機器學習中的決策樹等
- 定義:樹是由n(n>=1)個有限結點(node)組成的一個具有層次關系的集合,某些結點之前存在特定的關系,用連線相連,連線稱作邊(edge),邊的上端的結點稱為父結點,下面的端點稱為子結點
樹的特點
樹的相關術語
- 結點的度:一個結點含有的子樹的棵數
- 葉結點:度為0的結點稱為葉結點,也叫做終端結點
- 分支結點:度不為0的結點稱為分支結點,或叫做非終端結點
- 結點的層次:根結點層次為1,它的直接后繼層次為2,以此類推
- 結點的層序編號:將一棵樹的結點按照從上往下,同層次從左往右的順序,依次使用自然數按順序編號獲得的值
- 樹的度:樹中所有結點最大的度,可能是根結點的度也可能不是(如某顆子樹存在更多個顆樹)
- 樹的高度或深度:樹中結點的最大層次
- 結點的深度:是指對應結點到根結點路徑長度(經過的層次)
- 森林:沒有相互直接連接或間接連接關系的樹的集合,可稱之為森林。(將一棵樹的根結點及其邊移除得到所有其子樹組成的集合,可稱為森林)
- 孩子(子)結點:一個結點的直接后繼結點稱之為該結點的孩子(子)結點
- 雙親(父)結點:一個結點的直接前驅結點稱之為該結點的雙親(父)結點
- 兄弟結點:雙親結點相同的結點,互為兄弟結點
- 子孫:以某節點為根的子樹中任一節點都稱為該節點的子孫。
樹的常見/常用種類
- 二叉樹(Binary tree,區別于B-tree):每個節點最多含有兩個子樹的樹稱為二叉樹;
- 完全二叉樹(Complete Binary tree):除了最后一層的結點樹有可能沒有達到飽和外,其他所有層都已經是飽和值,此外,其最后一層的結點會盡量從左往右生成;
- 滿二叉樹(Full Binary tree):滿二叉樹是完全二叉樹的一種特殊情況
- 平衡二叉樹(AVL tree,取名于其兩個發明者 Adelson-Velsky和Landis):當且僅當任何節點的兩棵子樹的高度差不大于1的二叉樹;
- 二叉查找樹(英語:Binary Search Tree,BST),是一種內存中特殊的數據結構,它允許對存儲在其結點的數據進行增刪改查,或者用作動態的數據集合,或是通過key查找對應value的查找表;
- 霍夫曼樹(用于信息編碼):帶權路徑最短的二叉樹稱為哈夫曼樹或最優二叉樹;
- B樹:一種對讀寫操作進行優化的自平衡的二叉查找樹,能夠保持數據有序,擁有多余兩個子樹。
其中一部分我們會在后續詳細介紹
二叉樹的性質
- 性質1: 在二叉樹的第i層上至多有2^(i-1)個結點(i>0)
- 性質2: 深度為k的二叉樹至多有2^k - 1個結點(k>0)
- 性質3: 對于任意一棵二叉樹,如果其葉結點數為N0,而度數為2的結點總數為N2,則N0=N2+1;
- 性質4:具有n個結點的完全二叉樹的深度必為 log2(n+1)
- 性質5:對完全二叉樹,若從上至下、從左至右編號,則編號為i 的結點,其左孩子編號必為2i,其右孩子編號必為2i+1;其雙親的編號必為i/2(i=1 時為根,除外)
總結
以上是生活随笔為你收集整理的数据结构之树:树的介绍——9的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: problem b: 一年中的第几天_第
- 下一篇: ValueError: check_ho