zoukankan      html  css  js  c++  java
  • 剑指 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;
        }
    }
    
  • 相关阅读:
    虚拟机下unbuntu上网
    Ubuntu 用户切换和管理
    Brew程序模拟器上运行出现中文乱码
    struts2+spring+hibernate实例
    ubuntu ip设置
    JavaScript常用总结
    C++动态创建二维数组和清空cin缓冲
    🍖类的组合
    🍖鸭子类型
    🍖类的多态与多态性
  • 原文地址:https://www.cnblogs.com/nmydt/p/14256370.html
Copyright © 2011-2022 走看看