判斷二叉樹是否為完全二叉樹

2021-10-04 18:48:30 字數 905 閱讀 6156

判斷二叉樹是否為完全二叉樹

完全二叉樹看起來就像是滿二叉樹右下角缺了一口。

思路:需要引入乙個標誌位來區分兩個階段

1.先對該樹進行層序遍歷,會出現兩種階段

a):任何乙個節點都有兩顆子樹

當遇到乙個結點沒有子樹或者只有左子樹時,那麼就進入第二階段。當遇到乙個節點只有右子樹時,那麼這棵樹一定不是完全二叉樹。

b):任何乙個節點,都沒有子樹

2.當我們層序遍歷結束後,整棵樹滿足上述條件,那麼這棵樹就是完全二叉樹

(找不到反例,則證明正確)

//判斷一顆樹是否為完全二叉樹

boolean

iscompletetree

(treenode root)

while

(!queue.

isempty()

)//左子樹不為空,右子樹為空,切換到第二階段,入佇列

if(cur.left != null && cur.right == null)

//左子樹為空,右子樹不為空,一定不是完全二叉樹不符合規則

if(cur.left == null && cur.right != null)

//左右子樹都為空,切換至第二階段

if(cur.right == null && cur.left == null)

}//第二階段,所以節點都不能有左右子樹

else}}

//當所有條件都判斷完,也沒有找到反例,則說明該樹是一顆完全二叉樹

return

true

;}

二叉樹 判斷二叉樹是否為完全二叉樹

問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...

判斷二叉樹是否為完全二叉樹

include include 節點 struct node 銷毀二叉樹 void destroy tree node root destroy tree root left destroy tree root right delete root 是否為完全二叉樹 bool is cbtree no...

二叉樹是否為完全二叉樹

單鏈表查詢倒數第k的結點 下圖判斷是否二叉樹 假設圖中三個二叉樹的黃顏色部分沒有,各樹的名稱就是圖上所標。首先由要求,需要層序遍歷,層序遍歷會使用到佇列。要判斷乙個二叉樹是否為完全二叉樹,首先需要找到臨界點,比如此二叉樹c結點。如果c結點沒有左右孩子,現在就要判斷,b的左右孩子d和e,只要d和e至少...