struct node
};
是否為完全二叉樹:
bool iscompletebinarytree
(node *root)
queue>q;
q.push
(root)
; node *p;
//先用層次遍歷二叉樹,子樹為null也進佇列
while
((p = q.
front()
)!= null)
//如果是完全二叉樹,退出此迴圈後,後面的結點應該都是null
//如果不是完全二叉樹,則佇列裡還有非null結點
while
(q.empty()
==false
)//檢查是否有非空結點
q.pop();
}return
true
;}
是否為滿二叉樹:
bool isfullbinarytree
(node *root)
if(root-
>lchild == null && root-
>rchild != null)
else
if(root-
>rchild && root-
>lchild != null)
else
}
判斷是否是完全二叉樹
判斷一棵樹是否是完全二叉樹的思路 1 如果樹為空,則直接返回錯 2 如果樹不為空 層序遍歷二叉樹 2.1 如果乙個結點左右孩子都不為空,則pop該節點,將其左右孩子入佇列 2.1 如果遇到乙個結點,左孩子為空,右孩子不為空,則該樹一定不是完全二叉樹 2.2 如果遇到乙個結點,左孩子不為空,右孩子為空...
判斷二叉樹是否為完全二叉樹
include include 節點 struct node 銷毀二叉樹 void destroy tree node root destroy tree root left destroy tree root right delete root 是否為完全二叉樹 bool is cbtree no...
判斷二叉樹是否為完全二叉樹
判斷二叉樹是否為完全二叉樹 完全二叉樹看起來就像是滿二叉樹右下角缺了一口。思路 需要引入乙個標誌位來區分兩個階段 1.先對該樹進行層序遍歷,會出現兩種階段 a 任何乙個節點都有兩顆子樹 當遇到乙個結點沒有子樹或者只有左子樹時,那麼就進入第二階段。當遇到乙個節點只有右子樹時,那麼這棵樹一定不是完全二叉...