我有一個定義二叉樹的java類。 現在,我必須添加一個方法(ratio()),該方法返回對節點的引用(或者對於其中一個節點,如果有多個節點),則使得子樹中節點數量(因此包括節點本身)並且子樹的高度被最大化。 要做到這一點,我必須加起來1,否則葉的比例將是1/0 =無窮大。二叉樹:節點數量和子樹高度之間的最大值
我想我會定義一個公共方法來檢查這棵樹是否爲空,然後返回一個異常,否則它會調用一個私有方法來完成對這兩個子樹的所有工作。
但私有方法(如果這個過程是正確的)我不知道如何寫它。 我也可以定義一個能夠幫助我完成這個任務的類,但是怎麼做?
public class BinaryTree {
protected class Node {
protected Integer element;
protected Node left;
protected Node right;
Node(int element) {
this.element = element;
left = right = null;
}
Node(int element, Node left, Node right) {
this.element = element;
this.left = left;
this.right = right;
}
} //end Node class
public class NodeReference {
private Node node;
private NodeReference(Node node) {
this.node = node;
}
public int getElement() {
return node.element;
}
public void setElement(int e) {
node.element = e;
}
}
protected Node root;
public BinaryTree() {
root = null;
}
private class BoolNode {
boolean found;
Node node;
BoolNode(boolean found, Node node) {
this.found = found;
this.node = node;
}
}
public NodeReference ratio() {
if(isEmpty()) //equals to if(root == null)
throw new IllegalStateException("Empty tree.");
else
ratio(root);
}
private NodeReference ratio(Node node) {
//...
}
}
任何人都可以幫助我嗎? 感謝
建議,任何想法? – user3425699