• 110. 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.
    //会构造递归函数根据题目要求
    //和治的时候的分情况讨论树的构造---以根节点为中心,讨论左、右、题目要求
    
    public class Solution {
        public boolean isBalanced(TreeNode root) {
          // 返回值类型
          return maxDepth(root) != -1;
        }
        private int maxDepth(TreeNode node) {
            if (node == null) {
                return 0;
            }
            //divide
            int left = maxDepth(node.left);
            int right = maxDepth(node.right);
            //conquer
            /*根据要求操作节点进入结果
            画图: 分三种情况讨论
            以根节点为中心讨论左右节点的差 + 单独讨论左子树 + 单独讨论右子树*/
             
            if (Math.abs(left - right) > 1 || left == -1 || right == -1) {
                return -1;
            }
            return Math.max(left, right) + 1;
        }
    }
    

    分治法, 自己画个简图(三个, 两个节点), 遍历一下

    会写树的高度, 在树的高度上加了个判断而已.别忘了左子树和右子树也是要查的  

    分治法主要在如何设计返回值, 和题意与返回值的转化,

    递归出口1(判空), 最后的节点的出口2(或许加判断等), 分, 合: 将分好的左右节点作为单个节点, 进行题意的操作(返回值, 全局变量), 返回值 

  • 相关阅读:
    URL
    VI,CI,UI
    ubuntu优化使用
    Django入门之自定义页面
    python3 连接SQLserver
    Python3 捕捉异常
    python3 异常处理
    Django入门
    较大型站立会议(交付前两天)--张永组-2014-04-15
    站立会议-2014-04-14
  • 原文地址:https://www.cnblogs.com/apanda009/p/7237832.html
Copyright © 2020-2023  润新知