• 110. Balanced Binary Tree 110.平衡二叉树


    Given a binary tree, determine if it is height-balanced.

    For this problem, a height-balanced binary tree is defined as:

    a binary tree in which the left and right subtrees of every node differ in height by no more than 1.

     

    Example 1:

    Given the following tree [3,9,20,null,null,15,7]:

        3
       / 
      9  20
        /  
       15   7

    Return true.

    Example 2:

    Given the following tree [1,2,2,3,3,null,null,4,4]:

           1
          / 
         2   2
        / 
       3   3
      / 
     4   4

    一开始以为是最长路径和最短路径相减,不懂为啥直接是左右的最长路径相减了:没有最短。有长的子树就不用考虑短的了,所以是最长和最长的比较

    然后还是用求二叉树最大长度的那个方法
    有个奇葩的边界情况:左或者右节点为空时,长度返回-1

    /**
     * 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 {
        public boolean isBalanced(TreeNode root) {
            //cc
            if (root == null) return true;
            return (helper(root) != -1);
        }
        
        public int helper(TreeNode root) {
            //cc
            if (root == null) return 0;
            
            int left = helper(root.left);
            int right = helper(root.right);
            
            if (left == -1 || right == -1 || Math.abs(left - right) > 1)
                return -1;
            
            return Math.max(left, right) + 1;
        }
    }
    View Code
     
  • 相关阅读:
    生产宕机dunp配置
    虚拟机下载地址
    处理soapUI特殊返回报文 【原】
    SpringMVC 手动控制事务提交 【转】
    码云URL
    Java IO流操作汇总: inputStream 和 outputStream【转】
    springMVC下载中文文件名乱码【转】
    js
    js
    js
  • 原文地址:https://www.cnblogs.com/immiao0319/p/12990749.html
Copyright © 2020-2023  润新知