[英]Java member function for BST in order traversal
我最近在一次采訪中,被要求使用下面的Java成員函數原型為BST遍歷順序編寫代碼。
public void inOrderPrint()
我不接受任何參數的事實使我感到困惑。 我已經習慣了要傳入的節點。通過傳入的節點來遍歷樹是非常容易的……我有點困惑,如果沒有初始引用,怎么辦呢?
如果在BST的Node
類中定義了inOrderPrint()
則給定的簽名是有意義的,這意味着要遍歷的樹是根於當前節點的樹。 另外,樹可能是當前類中的一個屬性。 假設該方法是在節點類,它會是這樣的-而且也注意到遞歸被怎么叫:
public class Node {
private Node left;
private Node right;
private Object value;
public void inOrderPrint() {
if (left != null)
left.inOrderPrint();
System.out.println(value);
if (right != null)
right.inOrderPrint();
}
}
鑒於它是成員函數,因此可以假定您有權訪問根目錄(例如this.root)。 您可以使用傳遞節點的方法來重載此方法。 然后,您將使用根調用給定方法內的重載方法。
編輯:
我認為該方法是在樹中定義的,而不是在Node類中定義的。 您可以這樣做:(確保檢查是否為空!)
public void inOrderPrint(){
//traverse down the left tree
this.left.inOrderPrint();
System.out.println(this);
//traverse down the right tree
this.right.inOrderPrint();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.