欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode:平衡二叉树

程序员文章站 2022-02-19 06:35:18
...

题目链接: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;
        }
    }
}