以下函数 check() 用于判断一棵二叉树是否为( )。
bool check(TreeNode* root) {
if (!root) return true;
queue<TreeNode*> q;
q.push(root);
bool hasNull = false;
while (!q.empty()) {
TreeNode* cur = q.front();
q.pop();
if (cur == nullptr) {
hasNull = true;
} else {
if (hasNull) return false;
q.push(cur->left);
q.push(cur->right);
}
}
return true;
}逻辑代数运算:与(∧/×)、或(∨/+)、非(┐/¬)。德摩根律:┐(A∧B)=┐A∨┐B,┐(A∨B)=┐A∧┐B。
注意德摩根律的正确应用:┐(A∧B)=┐A∨┐B,┐(A∨B)=┐A∧┐B。C++中逻辑运算符有短路求值特性。
【考点】二叉树遍历|完全二叉树判定|队列 BFS
GESP 六级,二叉树遍历,完全二叉树判定。命题人卡住的是学生混淆满二叉树与完全二叉树的弱点——满二叉树看度数,完全二叉树看层级填充顺序。这类题在六级里高频出现,因为五级只考基础遍历,六级开始强调"判定条件"而非单纯"输出结果"。