美文网首页算法
LeetCode题解:判断是不是完全二叉树

LeetCode题解:判断是不是完全二叉树

作者: 搬码人 | 来源:发表于2022-05-20 20:36 被阅读0次

题目描述

给定一个二叉树,确定他是否是一个完全二叉树。
完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)

示例

  • 示例1
    示例1
    输入:{1,2,3,4,5,6}
    输出:true
  • 示例2
    示例2
    输入:{1,2,3,4,5,#,6}
    输出:false

思路方法

利用队列,将二叉树的所有节点记录下来。
根据完全二叉树的特性,当第一次遇到null节点的时候,就不会再有后续节点。
所以当遇到null后,队列仍然有非null节点弹出的话,就说明该二叉树不是完全二叉树。

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return bool布尔型
     */
    public boolean isCompleteTree (TreeNode root) {
        // write code here
        //空子树一定是二叉树
        if(root==null){
            return true;
        }
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        TreeNode cur;
        //首次出现的标记位
        boolean notComplete = false;
        while(!queue.isEmpty()){
            cur=queue.poll();
            //标记第一次遇到空节点
            if(cur==null){
                notComplete = true;
                continue;
            }
            //后续访问已经遇到空节点,说明经过了叶子
            if(notComplete){
                return false;
            }
            queue.offer(cur.left);
            queue.offer(cur.right);
        }
        return true;
    }
}

相关文章

  • LeetCode题解:判断是不是完全二叉树

    题目描述 给定一个二叉树,确定他是否是一个完全二叉树。完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它...

  • LeetCode 动态规划 题目分类汇总

    LeetCode解题链接 LeetCode 二叉树 题目分类汇总干货!LeetCode 题解汇总 62. Uniq...

  • LeetCode 每日一题 [59] 对称的二叉树

    LeetCode 对称的二叉树 [简单] 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像...

  • python-平衡二叉树

    Leetcode:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超...

  • 1 二叉树的最近公共祖先(leetcode 236) 2 判断是否为平衡二叉树 3 判断二叉树是否为满二叉树 4 ...

  • 算法(三) 树的遍历

    2020.4.22:二叉树的右视图 1.思路:层次遍历,取最右边的元素 2.题解:https://leetcode...

  • 【算法】-二叉树的问题整理

    持续更新中…… 判断类型的题目: 1.判断两棵二叉树是否相同 [LeetCode OJ]- Same Tree 关...

  • 数据结构习题

    已知一颗完全二叉树共有2018个节点,则该二叉树共有_______个叶子结点。题解:  根据公式可知,说明该完全二...

  • 完全二叉树的节点个数

    给定根节点,求这个完全二叉树的节点个数 [leetcode222]https://leetcode.com/pro...

  • 第九天的leetcode刷题

    今天的题目是判断是否为对称二叉树:101. 对称二叉树[https://leetcode-cn.com/probl...

网友评论

    本文标题:LeetCode题解:判断是不是完全二叉树

    本文链接:https://www.haomeiwen.com/subject/ebfqprtx.html