zoukankan      html  css  js  c++  java
  • Easy | LeetCode 110 | 剑指 Offer 55

    剑指 Offer 55 - II. 平衡二叉树

    输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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

    解题思路

    递归得判断左右子树的深度是否符合条件即可。

    public boolean isBalanced(TreeNode root) {
        if (root == null) {
            return true;
        }
       // 计算左右子树深度
        int leftSubTreeHeight = getHeight(root.left);
        int rightSubTreeHeight = getHeight(root.right);
       // 如果左右子树深度不符合条件, 直接返回
        if (Math.abs(leftSubTreeHeight - rightSubTreeHeight) > 1) {
            return false;
        }
       // 递归判断其左子树和右子树是否是平衡二叉树
        return isBalanced(root.left) && isBalanced(root.right);
    }
    
    public int getHeight(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
    }
    
  • 相关阅读:
    Day 69
    Day 68
    Day 67
    Day 66
    Day 65
    Day 64
    Day 63
    Day 62
    Day 61
    Day 60
  • 原文地址:https://www.cnblogs.com/chenrj97/p/14290488.html
Copyright © 2011-2022 走看看