题解 | #判断是不是平衡二叉树#

判断是不是平衡二叉树

http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

递归求解

  • 左子树是平衡二叉树
  • 右子树是平衡二叉树
  • 高度差相差不超过1(这里用到绝对值,可以是根节点的左子树的高度 比右子树的高度多1,也可以是根节点右子树的高度比左子树的高度多1)
public class Solution {

    public boolean IsBalanced_Solution(TreeNode root) {
        if (root == null) {
            return true;
        }
        int leftMax = depth(root.left);
        int rightMax = depth(root.right);
        return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right) && Math.abs(leftMax - rightMax) <= 1;
    }
    
  /**
  *求解一棵树的最大高度
  */
    public int depth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(depth(root.left), depth(root.right)) + 1; 
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务