剑指offer38 :平衡二叉树

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

思路:

  1. 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
  2. 判断两边高度,我这里想着用谁子树没了就会在和左子树的比较中比较会等于-1,然后并且直接返回
  3. 输出与-1不等的结果,如果是的话返回的是树的高度,不等于-1然后为true

假设一下右边有1个子节点,左边没有的情况
left=0,right=1,right是 **1 + Math.max(left, right)**算出来的
然后返回高度为2就会不等于1然后达到平衡

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        return getDepth(root)!=-1;
    }
    private int getDepth(TreeNode root) {
        if (root == null) return 0;
        int left = getDepth(root.left);
        if (left == -1) return -1;
        int right = getDepth(root.right);
        if (right == -1) return -1;
        return Math.abs(left - right) > 1 ? -1 : 1 + Math.max(left, right);
    }
}
发布了105 篇原创文章 · 获赞 19 · 访问量 4967

猜你喜欢

转载自blog.csdn.net/jiohfgj/article/details/104973626
今日推荐