1.樹的定義
樹:n(n≥0)個結點的有限集合。當n=
0時,稱為空樹;任意一棵非空樹滿足以下條件:
⑴ 有且僅有乙個特定的稱為根的結點;
⑵ 當n>1時,除根結點之外的其餘結點被分成m
(m>0)個互不相交的有限集合
t1,t2,…,
tm,其中每個集合又是一棵樹,並稱為這個根結點的子樹。
樹的定義是採用遞迴方法
2.二叉樹的遍歷操作
樹的遍歷:從根
結點出發,按照某種
次序訪問樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。
2.1前序(根)遍歷
若二叉樹為空,則空操作返回;否則:
①訪問根結點; ②
前序遍歷
根結點的左子樹; ③
前序遍歷
根結點的右子樹。
2.2中序(根)遍歷
若二叉樹為空,則空操作返回;否則: ①
中序遍歷
根結點的左子樹;
②訪問根結點;
③中序遍歷根結點的右子樹。
2.3後序(根)遍歷
若二叉樹為空,則空操作返回;否則: ①
後序遍歷
根結點的左子樹; ②
後序遍歷
根結點的右子樹。
③訪問根結點;
2.4層序遍歷
二叉樹的層次遍歷是指從二叉樹的第一層(即根結點)開始,從上至下
逐層遍歷,在同一層中,則按
從左到右
的順序對結點逐個訪問。
3.二叉樹的定義
二叉樹是
n(n≥0)
個結點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根結點和兩棵
互不相交
的、分別稱為根結點的
左子樹和
右子樹的二叉樹組成。
4.二叉樹的特點
⑴ 每個結點最多有兩棵子樹;
⑵ 二叉樹是有序的,其次序不能任意顛倒。
5.特殊的二叉樹
斜樹 1 .所有結點都只有左子樹的二叉樹稱為左斜樹;
2 .所有結點都只有右子樹的二叉樹稱為右斜樹;
3.左斜樹和右斜樹統稱為斜樹。
4.1斜樹
1. 在斜樹中,每一層只有乙個結點;
2.斜樹的結點個數與其深度相同。
6.二叉樹的雙親
二叉樹每乙個節點最多出度為2,即它的左孩子和右孩子。和鍊錶的next類似,二叉樹的節點間關係依靠雙親
root->left(左孩子)和root->right(右孩子)來表示。二叉樹的遞迴也經常是訪問完當前節點之後root->left訪問root
的左孩子,通過root->right訪問右孩子,進而完成對整個樹所有節點的訪問。
7.二叉樹的深度
從根節點到葉子結點的距離稱為深度,最大深度為根節點到葉子節點的最大距離,最小距離為根節點到葉子節點的最小距離。
8.二叉樹的等價
兩顆二叉樹等價只有當結構與節點值完全相同時才為等價,即兩個根節點的值相同並且左子樹等價左子樹,右子樹等價右子樹這兩顆樹才等價。
9.二叉樹的遞迴
二叉樹的大多數節點都連線著左右兩個子樹(有些節點沒有兩個子樹),每乙個子樹都有乙個根節點。在訪問完當前根節點後以當前根節點的孩子
為新的根節點訪問,進而把一棵樹按照乙個個向下移的根節點拆分為更小的子樹,對最小的子樹進行的操作遞迴後即為對整棵樹的操作。
LintCode 等價二叉樹
題目描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4 就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。做題思路 本題給出的bool型別的函式來判斷二叉樹是否等價...
lintcode 等價二叉樹
1 題目 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。2 思路 對兩課二叉樹從以下幾種情況考慮 兩個均空,true...
Lintcode 等價二叉樹
1 問題描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4 2 解題思路 從根節點開始判斷兩顆樹是否相等,先判斷結構是否相等,在...