L958. 二叉树的完全性检验 java

  1. 从1开始当下标,最后节点下标==节点总数?true:false;
java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int size=0,maxs=0;
    public boolean isCompleteTree(TreeNode root) {
        if(root==null) return  true;
        func(root,1);
        return size==maxs;
    }
    public void func(TreeNode node , int index){
        if(node==null) return ;
        size++;
        maxs=Math.max(maxs,index);   
        func(node.left,2*index);
        func(node.right,1+2*index);
   


    }
}
  1. 标准BFS,层序遍历,出现空节点后再出现非空节点就不是,其他都是。
java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int size=0,maxs=0;
    public boolean isCompleteTree(TreeNode root) {
        if(root==null) return true;
        int cnt=0;
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        while(!q.isEmpty()){
            TreeNode cur= q.poll();
            if(cur==null) cnt=1;
            else{
                if(cnt==1) return false;
                q.offer(cur.left);
                q.offer(cur.right);
            }
        }
        return  true;
    }
}
相关推荐
果汁华16 分钟前
java学习连续打卡30天(1)
java
武子康1 小时前
Java-171 Neo4j 备份与恢复 + 预热与执行计划实战
java·开发语言·数据库·性能优化·系统架构·nosql·neo4j
田梓燊1 小时前
红黑树分析 1
算法
m0_639817151 小时前
基于springboot火锅店管理系统【带源码和文档】
java·spring boot·后端
晚风吹长发1 小时前
二分查找算法+题目详解
c++·算法·二分查找
悠悠~飘1 小时前
18.PHP基础-递归递推算法
算法·php
pilgrim532 小时前
结合 Leetcode 题探究KMP算法
算法·leetcode
会编程的林俊杰2 小时前
SpringBoot项目启动时的依赖处理
java·spring boot·后端
一叶飘零_sweeeet2 小时前
深度拆解汽车制造系统设计:用 Java + 设计模式打造高扩展性品牌 - 车型动态生成架构
java·设计模式·工厂设计模式
罗义凯2 小时前
其中包含了三种排序算法的注释版本(冒泡排序、选择排序、插入排序),但当前只实现了数组的输入和输出功能。
数据结构·c++·算法