完全二叉树
1. 判断是否为完全二叉树
思路:层先遍历(BFS)、节点不能只出现右节点。
当节点出现了只有左节点或叶子节点时,退出BFS循环。检查剩下的节点是否都是叶子节点
class Solution {
public:
bool isCompleteTree(TreeNode* root) {
queue<TreeNode*> q;
q.push(root);
bool flg = false;
while (!q.empty())
{
TreeNode* front = q.front();
q.pop();
if (!front->left && front->right) // 左空右有
return false;
if (front->left) q.push(front->left);
if (front->right) q.push(front->right);
if (flg == true && (front->left || front->right)) // flg为真,再有节点存在左右孩子就错误了
return false;
if (!front->left || !front->right) // 左空或右空,说明走到叶了,flg置真
flg = true;
}
return true;
}
};