我有两种方法可以在 Java 中获取二叉树的最小和最大高度。但是我正在对根进行两次遍历两次。每个都是log n in Big(O)
。有没有办法在同一遍历中同时计算最小值和最大值,并作为具有对应于最小值和最大值的两个索引的数组返回。
这是我的方法
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;
}
}