• 平衡二叉树Balanced Binary Tree


    [抄题]:

    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 depth of the two subtrees of every node never differ by more than 1.

    [思维问题]:

    以为要用traverse一直判断,结果发现是没有读题。

    [一句话思路]:

    定义新的类 来帮助判断。(符合工业规范)

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    最后的最大深度是left right中最大的,再+1

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

    [总结]:

    [复杂度]:Time complexity: O(n) Space complexity: O(lgn)

    [英文数据结构,为什么不用别的数据结构]:

    定义新的类 来帮助判断。(符合工业规范)

    [其他解法]:

    分治法

    [Follow Up]:

    [LC给出的题目变变变]:

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    
    
    public class Solution {
        /*
         * @param root: The root of binary tree.
         * @return: True if this Binary tree is Balanced, or false.
         */
         class ResultType {
           boolean isBalanced;
           int maxDepth;
           ResultType(boolean isBalanced,int maxDepth) {
               this.isBalanced = isBalanced;
               this.maxDepth = maxDepth;
           }
         };
         
        public boolean isBalanced(TreeNode root) {
            return helper(root).isBalanced;
        }
        
        private ResultType helper (TreeNode root) {
            if (root == null) {
                return new ResultType(true, 0);
            }
            
            ResultType left = helper(root.left);
            ResultType right = helper(root.right);
            
            if (!left.isBalanced || !right.isBalanced) {
                return new ResultType(false, - 1);
            }
            
            else if (Math.abs(left.maxDepth - right.maxDepth) > 1) {
                return new ResultType(false, - 1);
            }
            else {
                return new ResultType(true, Math.max(left.maxDepth,right.maxDepth) + 1);
            }
        }
    }
    View Code
  • 相关阅读:
    【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
    【转】性能调优从哪里入手
    【转】从来没有冲突的团队是最糟糕的团队
    【转】华为Java编程军规,每季度代码验收标准
    【转】性能测试随笔,看看罢了,只做笑谈尔。
    MVC的JsonResult用法
    artDialog
    js apply/call/caller/callee/bind使用方法与区别分析
    jquery的each()详细介绍
    ASP.NET 4.5.256 has not been registered on the Web server
  • 原文地址:https://www.cnblogs.com/immiao0319/p/8372703.html
Copyright © 2020-2023  润新知