二叉樹


1 學(xué)習(xí)的內(nèi)容

在之前分析finsh shell的時候,看到siblings,隨手一搜,發(fā)現(xiàn)這個是在二叉樹中提到的,所以學(xué)習(xí)一下。

二叉樹,分為完美二叉樹、完全二叉樹和完滿二叉樹。

2 樹

我抄一個定義,鏈接
樹是由結(jié)點或頂點和邊組成的(可能是非線性的)且不存在著任何環(huán)的一種數(shù)據(jù)結(jié)構(gòu)。沒有結(jié)點的樹稱為空(null或empty)樹。一棵非空的樹包括一個根結(jié)點,還(很可能)有多個附加結(jié)點,所有結(jié)點構(gòu)成一個多級分層結(jié)構(gòu)。

這里面提到的結(jié)點,在finsh shell中同樣也提到過,也就是node。這里還是要區(qū)分一下:

節(jié)點和結(jié)點:

  • joint和connection為節(jié)點。"節(jié)點"是物理概念,是對實際結(jié)構(gòu)中的一個"節(jié)段"與另一個"節(jié)段"物理連接區(qū)的統(tǒng)稱。
  • node是結(jié)點。"結(jié)點"是力學(xué)概念,是在力學(xué)模型上根據(jù)分析需要所設(shè)置的標(biāo)識點或計算點。

姑且可以參考:鏈接

也將樹的一些概念性內(nèi)容貼出來:

英文 中文 含義
root 樹的頂端結(jié)點
child 孩子 當(dāng)遠(yuǎn)離根(Root)的時候,直接連接到另外一個結(jié)點的結(jié)點被稱之為孩子(Child)
parent 雙親 相應(yīng)地,另外一個結(jié)點稱為孩子(child)的雙親
siblings 兄弟 具有同一個雙親(Parent)的孩子(Child)之間互稱為兄弟
ancestor 祖先 結(jié)點的祖先(Ancestor)是從根(Root)到該結(jié)點所經(jīng)分支(Branch)上的所有結(jié)點
descendant 子孫 反之,以某結(jié)點為根的子樹中的任一結(jié)點都稱為該結(jié)點的子孫(Ancestor)
leaf 葉子 沒有孩子的結(jié)點(也就是度為0的結(jié)點)稱為葉子(Leaf)或終端結(jié)點
branch 分支 至少有一個孩子的結(jié)點稱為分支(Branch)或非終端結(jié)點
degree 結(jié)點所擁有的子樹個數(shù)稱為結(jié)點的度(Degree)
edge 一個結(jié)點和另一個結(jié)點之間的連接被稱之為邊
path 路徑 連接結(jié)點和其后代的結(jié)點之間的(結(jié)點,邊)的序列
level 層次 結(jié)點的層次(Level)從根(Root)開始定義起,根為第0層,根的孩子為第1層。以此類推,若某結(jié)點在第i層,那么其子樹的根就在第i+1層
Height of node 結(jié)點的高度 結(jié)點的高度是該結(jié)點和某個葉子之間存在的最長路徑上的邊的個數(shù)
Height of tree 樹的高度 樹的高度是其根結(jié)點的高度
Depth of node 結(jié)點的深度 結(jié)點的深度是從樹的根結(jié)點到該結(jié)點的邊的個數(shù)
Forest 森林 森林是n(>=0)棵互不相交的樹的集合

2.1 二叉樹

每個結(jié)點至多擁有兩棵子樹(即二叉樹中不存在度大于2的結(jié)點),并且,二叉樹的子樹有左右之分,其次序不能任意顛倒

其具有以下的性質(zhì):

  1. 若二叉樹的層次從0開始,則在二叉樹的第i層至多有2^i個結(jié)點(i>=0)。
  2. 高度為k的二叉樹最多有2^(k+1) - 1個結(jié)點(k>=-1)。 (空樹的高度為-1)
  3. 對任何一棵二叉樹,如果其葉子結(jié)點(度為0)數(shù)為m, 度為2的結(jié)點數(shù)為n, 則m = n + 1。

2.1.1 完美二叉樹

英文:
PBT(perfect binary tree)。

定義:
一個深度為k(>=-1)且有2^(k+1) - 1個結(jié)點的二叉樹。也就是說, 除了葉子結(jié)點之外的每一個結(jié)點都有兩個孩子,每一層(當(dāng)然包含最后一層)都被完全填充。

如下圖所示:

完美二叉樹.png

2.1.2 完全二叉樹

英文:
CBT(Complete Binary Tree)。

定義:
從根結(jié)點到倒數(shù)第二層滿足完美二叉樹,最后一層可以不完全填充,其葉子結(jié)點都靠左對齊。

如下圖所示:

完全二叉樹.png

2.1.3 完滿二叉樹

英文:
FBT(Full Binary Tree),又稱為:Strictly Binary Tree。

定義:
所有非葉子結(jié)點的度都是2。換句話說,只要你有孩子,你就必然是有兩個孩子。

如下圖所示:

完滿二叉樹.png

2.2 二叉樹遍歷

2.2.1 前序遍歷

2.2.2 中序遍歷

2.2.3 后序遍歷

2.3 二叉樹實現(xiàn)的計算器

按照這個要求來看,需要做到的有:
* 能夠含有( )、+、-、*、/ 等運算符的實數(shù)表達式計算功能
* 能夠處理小數(shù)和負(fù)數(shù)
* 能夠處理求余運算符(%)
* 能夠處理乘方(^)
* 能夠處理exp、sin、cos、tan、ctan等常見函數(shù)
* 能夠打印包含括號的中綴表達式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄 簡書的 markdown 都不支持 [TOC] 語法……我就不貼目錄了。下面按照類別,列出了29道關(guān)于二叉樹...
    被稱為L的男人閱讀 3,439評論 0 8
  • 數(shù)據(jù)結(jié)構(gòu)和算法--二叉樹的實現(xiàn) 幾種二叉樹 1、二叉樹 和普通的樹相比,二叉樹有如下特點: 每個結(jié)點最多只有兩棵子...
    sunhaiyu閱讀 6,701評論 0 14
  • 0. 什么是樹 數(shù)據(jù)的基本單位是數(shù)據(jù)元素,在涉及到數(shù)據(jù)處理時數(shù)據(jù)元素之間的關(guān)系稱之為結(jié)構(gòu),我們依據(jù)數(shù)據(jù)元素之間關(guān)系...
    安安zoe閱讀 543評論 0 0
  • 樹和二叉樹 1、樹的定義 樹(Tree)是由一個 或 多個結(jié)點 組成的有限集合T,且滿足: ①有且僅有一個稱為根的...
    利伊奧克兒閱讀 1,562評論 0 1
  • 關(guān)于樹的定義和存儲結(jié)構(gòu)可以查看上一篇文章樹的定義和樹的三種存儲結(jié)構(gòu) 一、二叉樹的定義 二叉樹的定義 二叉樹(Bin...
    NotFunGuy閱讀 2,254評論 5 25

友情鏈接更多精彩內(nèi)容