Java でバイナリ ツリーの最小高と最大高を取得する 2 つの方法があります。しかし、ルートを 2 回トラバーサルしています。それぞれですlog n in Big(O)
。同じトラバーサルで最小値と最大値の両方を計算し、最小値と最大値に対応する 2 つのインデックスを持つ配列として返す方法はありますか。
ここに私の方法があります
public static int minHeight(Node root){
if (root==null) return -1;
return 1+Math.min(minHeight(root.left), minHeight(root.right));
}
public static int height(Node root){
if (root==null) return -1;
return 1+Math.max(height(root.left), height(root.right));
}
class Node {
Node left;
Node right;
int data;
public Node(int c){
this(c, null, null);
}
public Node(int c,Node left, Node right) {
this.data = c;
this.left=left;
this.right=right;
}
}