判斷乙個樹為完全二叉樹

2021-08-04 23:07:32 字數 556 閱讀 3605

該節點有左子樹,可以沒有有子樹,但如果有右子樹,就必須有左子樹

這裡我們可以用層序遍歷的思想,借助乙個佇列,佇列儲存的是node*,將該節點入佇列,出佇列的同時將下一層自己的左右節點入佇列,設定乙個標誌位,剛開始位true,如果此時左右節點為空時,置為false,第一次為false,當第二次進來時,將該節點入佇列後,判斷下flag,此時flag為false,說明該層的上乙個節點為空,而此時也就是相對寫乙個節點不為空,則說明不是完全二叉樹

bool iscompletetree()//判斷是否為完全二叉樹

queue

q; q.push(_root);

bool flag = true;

while (!q.empty())

}else

if (front->_right)

}else

}return

true;

}

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

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 任何乙個節點都有兩顆子樹 當遇到乙個結點沒有子樹或者只有左子樹時,那麼就進入第二階段。當遇到乙個節點只有右子樹時,那麼這棵樹一定不是完全二叉...

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

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