LeetCode:平衡二叉树

题目链接:https://leetcode-cn.com/problems/balanced-binary-tree/description/

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 。

思路:见博友链接:https://www.cnblogs.com/grandyang/p/4045660.html 如果从根节点递归下来判断是否为平衡二叉树就会重复计算 这里先看子树是否为二叉树 否,则直接退出  是,在找父节点是否为二叉树。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {  
    public int checkDepth(TreeNode root){
        if(root==null){
            return 0;
        }
        int left=checkDepth(root.left);
        if(left==-1) return -1;
        int right=checkDepth(root.right);
        if(right==-1)return -1;
        int diff=Math.abs(left-right);
        if(diff>1) {
            return -1;
        }else{
            return Math.max(left,right)+1;
        }
    }
    public boolean isBalanced(TreeNode root) {
        if(checkDepth(root)==-1){
            return false;
        }else{
            return true;
        }
    }
}

 

你可能感兴趣的:(LeetCode)