天天看點

LeetCode--110--easy--BalancedBinaryTree

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));
    }
}