完全二叉树的定义是:除了最后一层以外,每一层的节点都必须是满的,并且最后一层的节点都必须尽可能靠左排列。
如果要判断一个二叉树是否为完全二叉树,则需要按照以下步骤进行:
- 如果该树为空,则它是一颗完全二叉树;
- 如果该树不为空,按照层次遍历的方式,从根节点开始遍历(可以使用队列来实现),同时记录节点的个数;
- 如果当前节点的左子节点不为空,则将左子节点加入队列中;
- 如果当前节点的右子节点不为空,则将右子节点加入队列中;
- 如果当前节点的左子节点为空,但是右子节点不为空,则该树不是完全二叉树;
- 如果当前节点的左子节点和右子节点都为空,则该节点之后的所有节点都必须是叶子节点。如果队列中还有节点,则该树不是完全二叉树。
如果按照上述步骤判断,最终队列为空,则该树是完全二叉树;否则该树不是完全二叉树。