樹的定義 基本術語
1. 樹(Tree)的基本概念
1.1 樹的定義
樹是由結點或頂點和邊組成的(可能是非線性的)且不存在著任何環的一種資料結構。沒有結點的樹稱為空(null或empty)樹。一棵非空的樹包括一個根結點,還(很可能)有多個附加結點,所有結點構成一個多級分層結構。
1.2 樹的基本術語
Root | The top node in a tree. | 根 | 樹的頂端結點 |
Child | A node directly connected to another node when moving away from the Root. | 孩子 | 當遠離根(Root)的時候,直接連線到另外一個結點的結點被稱之為孩子(Child); |
Parent | The converse notion of a child. | 雙親 | 相應地,另外一個結點稱為孩子(child)的雙親(parent)。 |
Siblings | A group of nodes with the same parent. | 兄弟 | 具有同一個雙親(Parent)的孩子(Child)之間互稱為兄弟(Sibling)。 |
Ancestor | A node reachable by repeated proceeding from child to parent. | 祖先 | 結點的祖先(Ancestor)是從根(Root)到該結點所經分支(Branch)上的所有結點。 |
Descendant | A node reachable by repeated proceeding from parent to child. | 子孫 | 以某結點為根的子樹中的任一結點都稱為該結點的子孫(後代)。 |
Leaf | A node with no children. | 葉子(終端結點) | 沒有孩子的結點(也就是度為0的結點)稱為葉子(Leaf)或終端結點。 |
Branch | A node with at least one child. | 分支(非終端結點) | 至少有一個孩子的結點稱為分支(Branch)或非終端結點。 |
Degree | The number of sub trees of a node. | 度 | 結點所擁有的子樹個數稱為結點的度(Degree)。 |
Edge | The connection between one node and another. | 邊 | 一個結點和另一個結點之間的連線被稱之為邊(Edge)。 |
Path | A sequence of nodes and edges connecting a node with a descendant. | 路徑 | 連線結點和其後代的結點之間的(結點,邊)的序列。 |
Level | The level of a node is defined by 0 + (the number of connections between the node and the root). | 層次 | 結點的層次(Level)從根(Root)開始定義起,根為第0層,根的孩子為第1層。以此類推,若某結點在第i層,那麼其子樹的根就在第i+1層。 |
Height of node | The height of a node is the number of edges on the longest path between that node and a leaf. | 結點的高度 | 結點的高度是該結點和某個葉子之間存在的最長路徑上的邊的個數。 |
Height of tree | The height of a tree is the height of its root node. | 樹的高度 | 樹的高度是其根結點的高度。 |
Depth of node | The depth of a node is the number of edges from the tree's root node to the node. | 結點的深度 | 結點的深度是從樹的根結點到該結點的邊的個數。 (注:樹的深度指的是樹中結點的最大層次。) |
Forest | A forest is a set of n ≥ 0 disjoint trees. | 森林 | 森林是n(>=0)棵互不相交的樹的集合。 |
2 二叉樹(Binary Tree)
2.1 什麼是二叉樹(Binary Tree)
每個結點至多擁有兩棵子樹(即二叉樹中不存在度大於2的結點),並且,二叉樹的子樹有左右之分,其次序不能任意顛倒。
2.2 二叉樹的性質
(1)若二叉樹的層次從1開始,則在二叉樹的第i層,不超過2^(i-1)個結點(i>=0)。
(2)對任何一棵二叉樹,如果其葉結點數為N0,而度數為2的結點總數為N2,則N0=N2+1;
(3)深度為h的二叉樹最多有2^h-1個結點(h>=1),最少有h個結點;
(4)具有n個結點的完全二叉樹的深度為int(log2n)+1
3 儲存方式
儲存的方式和圖一樣,有連結串列和陣列兩種,用陣列存訪問速度快,但插入、刪除節點操作就比較費時了。實際中更多的是用鏈來表示二叉樹的。
4 遍歷方法
分為前序遍歷,中序遍歷和後序遍歷,和按層次遍歷。
前三種方法,根據根結點的順序命名的,中序遍歷最重要。可用遞迴實現,或者模擬棧操作來實現非遞迴的遍歷方法。
中序遍歷如下圖:
按層遍歷也比較簡單,就是自己實現一個佇列就可以了,也可以用陣列來模擬。需要注意的是後序遍歷的非遞迴演算法,需要一個標識來標識某個節點的狀態,具體的就是當一個節點左孩子被遍歷的時候為一個狀態,當左右兩個節點都被遍歷的時候又是一個狀態,只有一個節點的左右孩子幾點都被遍歷,才可以輸出這個節點的值,這個和後序遍歷的定義差不多。
相關文章
- 樹的定義及相關術語
- Web 3.0 術語及其簡單英語定義Web
- 電子工程術語與定義列表
- 機器學習定義及基本術語(根據周志華的《機器學習》概括)機器學習
- HTML基本語法和語義HTML
- 樹的相關術語
- CSS基本術語CSS
- 事務基本定義操作
- SAP RETAIL 特性樹(Characteristic Tree)的定義AI
- 語義網路術語
- Kubernetes的基本概念和術語
- c語言的定義與宣告C語言
- c 語言中巨集定義和定義全域性變數的區別變數
- 樹:基本樹形
- 超融合基本架構簡單定義架構
- 資料庫基本操作 術語資料庫
- PostgreSQL DBA(14) - WAL基本術語SQL
- ANSI C定義的一些關於可移植性的術語說明
- 樹的基本概念
- c語言函式指標的定義C語言函式指標
- lua語法-變數的定義與使用變數
- 函式基本定義和使用‘未完待續函式
- Mapbox詞彙表中文文件(查詢Mapbox相關的術語及其定義)
- 二叉樹 部分定義與性質二叉樹
- Python語言常用的49個基本概念及含義Python
- 條件佇列大法好:wait和notify的基本語義佇列AI
- [翻譯] JavaScript函式的6個基本術語JavaScript函式
- 搜狗語義匹配技術前沿
- HTML基本語法和語義寫法規則與例項HTML
- VARCHART XGantt系列教程:使用顏色來定義語義
- Java 中的屠龍之術:如何修改語法樹?Java
- BIM技術的起源與定義是什麼
- 微服務定義及.Net Core中用的技術微服務
- C語言中的標頭檔案中的巨集定義C語言
- 資料結構基本概念和術語資料結構
- 資料結構-基本概念和術語資料結構
- C語言巨集定義中#define中的井號#的使用C語言
- C語言中宏定義都有那些盲區?C語言