一、概念:
二叉樹:二叉樹是結點的乙個有限集合,該集合或者為空,或者是由乙個根節點加上兩顆分別稱為左子樹和右子樹的二叉樹組成。
二叉樹的特點:
1.每個結點最多有兩顆子樹,即二叉樹不存在度大於2的結點。
2.二叉樹的子樹有左右之分,其子樹的次序不能顛倒。
滿二叉樹:在一棵二叉樹中,如果所有分支節點都存在左子樹和右子樹,並且所有葉子節點都在同一層上。
完全二叉樹:如果一棵樹具有n個結點的二叉樹結構與滿二叉樹的前n個結點的結構相同,稱為完全二叉樹。
二叉樹的性質:
1.若規定根節點的層數為1,則一顆非空二叉樹的第i層上最多有2^(i-1)個結點。
2.若規定只有根節點的二叉樹的深度為1,則深度為k的二叉樹的最大結點數是2^k -1.
3.對任何一棵二叉樹,如果其葉結點個數為n0,度為2的非葉節點個數為n2,則有n0=n2+1。
4.具有n個節點的完全二叉樹的深度k為log2(n+1)向上取整。
5.對於具有n個節點的完全二叉樹,如果按照從上至下從左至右的順序對所有節點從0開始編號,則對於序號為i的節點有:
a.如果i>0,則序號為i節點的雙親結點的序號為(i-1)/2;如果i=0,則序號為i的節點為根節點,無雙親結點。
b.如果2i+1二叉樹的基本操作:
1.二叉樹的四種遍歷方式:
a.前序遍歷:
若二叉樹為空,則演算法結束:
b.中序遍歷:
c.後序遍歷:
層序遍歷:
按照二叉樹的層序次序(即從根節點層到葉結點層),同一層中按先左子樹再右子樹的次序遍歷二叉樹。因此,在所有未被訪問節點的集合中,排序在已訪問節點集合中最前面節點的左子樹的根節點最先被訪問,然後是該節點的右子樹的根節點。
層序遍歷演算法:
初始化乙個佇列
把根節點的指標入佇列。
當佇列非空時,迴圈執行下面步驟:
》出佇列取乙個節點
》若該節點的左子樹非空,將該節點的左子樹指標入佇列。
》若該節點的右子樹非空,將該結點的右子樹指標入佇列。
樹與二叉樹相關概念
樹是n n 0 個節點的有限集合。在任意一顆非空樹中 1 有且僅有乙個特定的稱為根的節點 2 當 n 1 時,其餘節點可分為m m 0 個互不相交的有限集 t1 t2 tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹。根 根節點 沒有前驅 葉子 又叫終端節點 沒有後繼,度為0 森林 m m 0 ...
二叉樹 二叉樹的相關操作
遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...
二叉樹相關概念及建立
度就是乙個節點的分支數 對於任何乙個 二叉樹,如 果其葉節點的個數為n0,度為2的非葉節點個數是n2,則有n0 n2 1 n0 n1 n2 2 n2 n1 1 n0 n2 1 度為1的非葉子節點個數為n1 節點個數為n0 n1 n2 邊的個數為2 n2 n1 節點的個數為 邊的個數 1 具有n個節點...