LeetCode-判断一棵树是否为平衡二叉树

题目链接

Problem.110:https://leetcode.com/problems/balanced-binary-tree/

题目描述

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

本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例

输入1:
[3,9,20,null,null,15,7]

	3
   / \
  9  20
    /  \
   15   7

输出1:

true

输入2:
[1,2,2,3,3,null,null,4,4]

	   1
      / \
     2   2
    / \
   3   3
  / \
 4   4

输出2:

false

解析

递归计算树的深度,同时判断是否为平衡二叉树,以-1来表示非平衡二叉树,这样可以将树是否为平衡二叉树这一目的整合到求树的深度的递归方法中。

代码

public boolean isBalanced(TreeNode root) {
    return isAvl(root) != -1;
}
public int isAvl(TreeNode root) {
    if (root == null) {
        return 0;
    }

    int left = isAvl(root.left);
    if (left == -1) {
        return -1;
    }
    int right = isAvl(root.right);
    if (right == -1) {
        return -1;
    }

    if (Math.abs(left - right) <= 1) {
        return Math.max(left, right) + 1;
    } else {
        return -1;
    }
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值