小编Sta*_*ime的帖子

检查二叉树是否平衡

我在一本书中看到了这个问题(破解编码面试)。建议的代码是:

public boolean isBalanced(Node root) {

    if(root == null)
        return true;

    int leftHeight = getHeight(root.left);
    System.out.println("left height: " + leftHeight);
    int rightHeight = getHeight(root.right);
    System.out.println("right height: " + rightHeight);
    int diff = Math.abs(leftHeight - rightHeight);

    // check if difference in height is more than 1
    if (diff > 1)
        return false;

    // check if left and right subtrees are balanced
    else 
        return isBalanced(root.left) && isBalanced(root.right);
Run Code Online (Sandbox Code Playgroud)

我不明白的部分是为什么我们需要返回isBalanced(root.left)&& isBalanced(root.right)。仅检查高度并在高度大于1时返回false,否则返回true是否足够?

java binary-tree

2
推荐指数
1
解决办法
576
查看次数

标签 统计

binary-tree ×1

java ×1