二叉樹,二叉樹c++
樹型結構是一類重要的非線性資料結構,其中二叉樹較為常用。二叉樹的特點的每個節點至多隻有兩棵子樹(寄即二叉樹中不存在大於2的節點),並且二叉樹有左右子樹之分。
二叉樹的屬性:
1、二叉樹有5種基本形態,(a)空二叉樹 (b)僅有根節點的二叉樹 (c) 右子樹為空白的二叉樹 (d)左右子樹均為非空的二叉樹(e)左子樹為空白的二叉樹
二叉樹的性質;
性質1 在二叉樹的第 i 層上至多有 2^( i -1) 個節點 ( i ≧ 1 )
性質2 深度為 k 的二叉樹 至多有 2^k - 1 個節點, ( k ≧ 1)
性質3 對任何一棵二叉樹 T ,如果其 終端結點 數 為 n0,度為2的節點數為n2,則 n0 = n2 + 1.(度:指父結點下面有幾個孩子結點);
性質4 具有n個節點的完全二叉樹的深度為 [㏒₂n] + 1
性質5 如果有一棵有n個節點的完全二叉樹(其深度為 [㏒₂n] + 1)的節點按層序編號(從第 1 層到 第 [㏒₂n] + 1 層,每層從左至右),則對任意一節點 i (1≤ i ≤ n),有
①如果 i = 1,則節點 i 是二叉樹的根,無雙親 ; 如果 i > 1,則其雙親的節點 為 [ i / 2];
②如果 2i > n, 則節點 i 無左孩子(節點 i 為葉子的節點);否則其左孩子的是 2i。
③如果 2i + 1 > n,則其無有孩子;否則其右孩子的節點是 2i + 1
二叉樹的遍曆方式:
1、層次遍曆 (從上到下,從左至右的順序進行遍曆)
2、先序遍曆 ( PreOrder(T) = T的根節點 + PreOrder(T的左子樹) + PreOrder(T的右子樹) )
3、中序遍曆 ( InOrder(T) = InOrder(T的左子樹) + T的根節點 + InOrder(T的右子樹) )
4、後序遍曆 ( PostOrder(T) = PostOrder(T的左子樹) + PostOrder(T的右子樹) + T的根節點 )
(如有轉載請註明出處)