什么是完全二叉树呢
如果一颗二叉树的只有最后两层结点的度能小于2,其余结点的度都等于2。且最后一层的结点从最左边依次排列。 如果一颗二叉树中的每一个结点都与编号从1到n的满二叉树中的结点一一对应,则称这棵二叉树为完全二叉树。
我们可以根据完全二叉树的定义,按照层序遍历一颗树,当遇到空结点时如果这棵树已经遍历完毕,则这棵树就是完全二叉树,如果遇到空结点的后面还有元素则这棵树就不是完全二叉树。
我们可以用一个flag来标记,当遇到第一个空结点是标记为1,如果后面要是再遇到非空结点时就表示不是完全二叉树。
bool IsCompleteBinaryTree(BinaryTreeNode<int>* root) //判断一颗二叉树是否是完全二叉树
{
if (root == NULL)
return false;
queue<BinaryTreeNode<int>*> q;
int flag = 0;