判断二叉树是否为完全二叉树的实例

 更新时间:2017年05月23日 08:43:28   投稿:lqh  
这篇文章主要介绍了判断二叉树是否为完全二叉树的实例的相关资料,需要的朋友可以参考下

完全二叉树特点

完全二叉树是指除了最后一层之外,其他每一层的结点数都是满的。最后一层如果也满了,是一颗满二叉树,也是完全二叉树。最后一层如果不满,缺少的结点也全部的集中在左边,那也是一颗完全二叉树。

判断一棵二叉树是否为完全二叉树

import java.util.*;
class TreeNode {
  int val = 0;
  TreeNode left = null;
  TreeNode right = null;
  public TreeNode(int val) {
    this.val = val;
  }
}
public class CheckCompletion {
  public boolean checking(TreeNode root) {
    Queue<TreeNode> queue = new LinkedList<TreeNode>();
    boolean leaf = false; // 叶子结点
    TreeNode left;
    TreeNode right;
    queue.add(root);
    while (!queue.isEmpty()) {
      root = queue.poll();
      left = root.left;
      right = root.right;
      if ((leaf&&(left!=null||right!=null)) || (left==null&&right!=null)) {
        // 如果之前层遍历的结点没有右孩子,且当前的结点有左或右孩子,直接返回false
        // 如果当前结点有右孩子却没有左孩子,直接返回false
        return false;
      }
      if (left != null) {
        queue.offer(root.left);
      }
      if (right != null) {
        queue.offer(root.right);
      }else {
        leaf = false; // 如果当前结点没有右孩子,那么之后层遍历到的结点必须为叶子结点
      }
    }
    return true;
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • sharding-jdbc5.0.0实现分表实践

    sharding-jdbc5.0.0实现分表实践

    本文主要介绍了sharding-jdbc5.0.0分表实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • spring boot Mybatis 拦截器实现拼接sql和修改的代码详解

    spring boot Mybatis 拦截器实现拼接sql和修改的代码详解

    这篇文章主要介绍了spring boot Mybatis 拦截器实现拼接sql和修改,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Java流程控制之循环结构while、do...while

    Java流程控制之循环结构while、do...while

    这篇文章主要介绍了Java流程控制之循环结构while及do...while,文章除了讲解循环结构while和do...while之外,还讲解了他们之间的区别,下面我们就一起进入文章讲解更多详细内容吧
    2021-12-12
  • springboot项目中实现访问druid内置监控页面

    springboot项目中实现访问druid内置监控页面

    这篇文章主要介绍了springboot项目中实现访问druid内置监控页面的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java编程基础测试题分享

    Java编程基础测试题分享

    这篇文章主要介绍了Java编程基础测试题分享,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 解决java.sql.SQLException:索引中丢失 IN或OUT 参数::x问题

    解决java.sql.SQLException:索引中丢失 IN或OUT 参数::x问题

    这篇文章主要介绍了解决java.sql.SQLException:索引中丢失 IN或OUT 参数::x问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 使用Java实现简单串口通信

    使用Java实现简单串口通信

    这篇文章主要介绍了使用Java实现简单串口通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java的Struts2框架中拦截器使用的实例教程

    Java的Struts2框架中拦截器使用的实例教程

    拦截器是Struts框架的重要特性,Struts中每一个Action请求都包装在一系列的拦截器的内部,这里我们就来看一下Java的Struts2框架中拦截器使用的实例教程
    2016-07-07
  • Springboot hibernate envers使用过程详解

    Springboot hibernate envers使用过程详解

    这篇文章主要介绍了Springboot hibernate envers使用过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 详解Java中的HashTable

    详解Java中的HashTable

    这篇文章主要介绍了Java中的HashTable的相关资料,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12

最新评论