zoukankan      html  css  js  c++  java
  • Leetcode 面试题04.04检查平衡性

    题目定义:

    实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 
        
    

    递归方式:

    class Solution {
        private boolean ans = true;
        public boolean isBalanced(TreeNode root) {
            if(root == null)
                return true;
            dfs(root);
            return ans;
           
        }
        private int dfs(TreeNode root) {
            if (!ans || root == null)
                return 0;
            int left = dfs(root.left);
            int right = dfs(root.right);
            if (Math.abs(left - right) > 1) {
                ans = false;
            }
            return Math.max(left, right) + 1;
        }
        
    }
    
  • 相关阅读:
    Android AdapterView View的复用机制 分析
    go12---interface
    go11---方法method
    go10---struct
    go09---defer
    go8---函数function
    go7---map
    go6---slice切片
    go5--数组
    go4--break,continue + 标签
  • 原文地址:https://www.cnblogs.com/CodingXu-jie/p/14173353.html
Copyright © 2011-2022 走看看