知识点
完全二叉树指的是除了最后一层外,其余层上的节点必须是满的的二叉树。最后一层如果满了,就是一棵满二叉树,如果没满,空缺的节点位置都集中在最后一层的右边。
教科书中对完全二叉树的定义为: 对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
题目
给定一个二叉树的头节点head,判断一棵树是否为完全二叉树。
思路
1、按照按层遍历的方法遍历该二叉树:队列;
2、如果某节点只有右孩子节点,没有左孩子节点,返回false;
3、如果某节点左右孩子结点都没有(是叶子节点),那么这个节点右边的节点都应该是叶子节点,如果不是返回false;
4、如果层次遍历完毕没有出现上述情况,返回true
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class CheckCompletion {
public:
bool chk(TreeNode* roo