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


    1. 从1开始当下标,最后节点下标==节点总数?true:false;
    /**
     * 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    1. 标准BFS,层序遍历,出现空节点后再出现非空节点就不是,其他都是。
    /**
     * 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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    Linux安装Jenkins
    【etcd】编译与安装
    uniapp的async、await用法介绍
    正确查询DO基站IP
    RK3588平台产测之ArmSoM-W3 DDR带宽监控
    你的微信聊天记录有多大?官方清理教程来了
    Python标准库分享之时间与日期 (time, datetime包)
    R语言绘制矩阵散点图
    CSV文件新增数据知多少
    vue3前端开发-开发环境安装篇
  • 原文地址:https://blog.csdn.net/qq_51791303/article/details/133622849