二叉树oj ----->判断二叉树是否为完全二叉树

Posted ohana!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树oj ----->判断二叉树是否为完全二叉树相关的知识,希望对你有一定的参考价值。

题目内容:

解题思路:

  • 判断是否为完全二叉树的最重要的一点就是知道什么是完全二叉树,或者什么不是完全二叉树,比较简单的是前者
  • 完全二叉树的简单理解:最后一层的前面的每一层结点都是满的,并且最后一层不满时,没有满的双亲结点的孩子结点必须靠左
  • 我们借助于层序遍历(层序遍历时是不空才入队列,这次就让空也入队列)
  • 判断时,当结点为空,就是我们判断的时候
  1. 如果cur为空且队列不为空,那么一定不是完全二叉树
  2. 如果cur为空且队列也为空,那么一定是完全二叉树

解题代码:

class Solution {
    public boolean isCompleteTree(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        while(!q.isEmpty()){
            //每一层的结点的个数
            int count = q.size();
            for(int i = 0;i < count;i++){
                //循环遍历每一个结点
                TreeNode cur = q.poll();
                //如果cur是空结点时,我们需要进行判断
                //1.如果cur为空且队列不为空,那么一定不是完全二叉树
                //2.如果cur为空且队列也为空,那么一定是完全二叉树
                if(cur == null){
                    while(!q.isEmpty()){
                        if(q.poll() != null){
                            return false;
                        }
                    }
                    return true;
                }
                q.offer(cur.left);
                q.offer(cur.right);
            }
        }
        return true;
    }
}

以上是关于二叉树oj ----->判断二叉树是否为完全二叉树的主要内容,如果未能解决你的问题,请参考以下文章

oj---九度oj---1433

oj---九度oj---1434

oj---九度oj---1015

oj---九度oj---1054

oj--九度oj---1431

oj---九度oj---1078