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;
    }
}
    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/liuzhixiong_521/article/details/86315335
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞