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