• 剑指 Offer 55


    题目:

    输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

    示例 1:
    
    给定二叉树 [3,9,20,null,null,15,7]
    
        3
       / 
      9  20
        /  
       15   7
    返回 true 。
    
    示例 2:
    
    给定二叉树 [1,2,2,3,3,null,null,4,4]
    
           1
          / 
         2   2
        / 
       3   3
      / 
     4   4
    返回 false 。
    
     
    
    限制:
    
    1 <= 树的结点个数 <= 10000
    
    

    方法一:

    在这里插入图片描述

    代码:

    class Solution {
        public boolean isBalanced(TreeNode root) {
            return recur(root) != -1;
        }
    
        private int recur(TreeNode root) {
            if (root == null) return 0;
            int left = recur(root.left);
            if(left == -1) return -1;
            int right = recur(root.right);
            if(right == -1) return -1;
            return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1;
        }
    }
    
    

    方法二:

    在这里插入图片描述

    代码:

    class Solution {
        public boolean isBalanced(TreeNode root) {
            if (root == null) return true;
            return Math.abs(depth(root.left) - depth(root.right)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
        }
    
        private int depth(TreeNode root) {
            if (root == null) return 0;
            return Math.max(depth(root.left), depth(root.right)) + 1;
        }
    }
    
  • 相关阅读:
    ThreadLocal
    volatile的理解
    二叉搜索树
    springboot中URL带有斜杠的转义字符%2F导致的400错误
    深入理解字符串
    Gradle安装与Idea配置
    基本数据类型和包装类
    Windows系统MongoDB安装
    Java程序是如何执行的?
    sshd服务器搭建管理和防止暴力破解
  • 原文地址:https://www.cnblogs.com/nmydt/p/14256370.html
Copyright © 2020-2023  润新知