簡體   English   中英

BST中Java成員函數的遍歷順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM