package com.app.main.LeetCode.tree;
import com.app.main.LeetCode.base.TreeNode;
/**
* 110
*
* easy
*
* https://leetcode.com/problems/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 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
* Return false.
*
*
* Created with IDEA
* author:Dingsheng Huang
* Date:2019/11/1
* Time:下午4:58
*/
public class BalancedBinaryTree {
public boolean isBalanced(TreeNode root) {
if (root == null) {
return true;
}
if (Math.abs((findMaxDepth(root.left) - findMaxDepth(root.right))) > 1) {
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
private int findMaxDepth(TreeNode root) {
if (root == null) {
return 0;
}
return 1 + Math.max(findMaxDepth(root.left), findMaxDepth(root.right));
}
}