1

二分木 t のすべての内部ノードのバランス係数を出力するメソッドを実装する割り当てがあります。

私はそれをやろうとしましたが、3つの方法が必要でした..1つあるはずで、ルートのバランス係数しか出力できないと思います.これはツリーtのすべてのノードに対して行うべきだと思います?

public int maxHeight(BinaryTree t) {    
    if(t == null) {
        return 0;
    }

    int height1 = maxHeight(t.getLeft()) + 1;

    int height2 = maxHeight(t.getRight()) + 1;

    if(height1 > height2) {
        return height1;
    }
    else {
        return height2;
    }
}

public int minHeight(BinaryTree v) {
    if(v == null) {
        return 0;
    }

    int height1 = minHeight(v.getLeft()) + 1;

    int height2 = minHeight(v.getRight()) + 1;

    if(height1 < height2) {
        return height1;
    }
    else {
        return height2;
    }
}

public int balanceFactor(int max, int min) {
    return max - min;
}
4

1 に答える 1

2

次のように簡単にする必要があります。

public int printBalanceFactor(BinaryTree t)
{
    if (t == null)
        return 0;

    if (t.left == null && t.right == null)
        return 1;

    int heightL = printBalanceFactor(t.left);
    int heightR = printBalanceFactor(t.right);

    System.out.println("Balance factor of " + t + " is " + (heightL - heightR));

    return heightL + heightR + 1;
}
于 2013-03-18T08:05:38.430 に答える