2014-03-18 43 views
-1

我必須編寫一個例程,以遞歸方式打印二叉搜索樹的根。該函數的形式如何製作一個可以打印BST根的遞歸例程?

printTheRoot() { 

    printTheRoot(someNode) 

} 

printTheRoot(Node node) { 

    .... 

} 

我不是在尋找特定的代碼,只是如何可以這樣做的想法或僞代碼。就個人而言,我不認爲遞歸是必要的,但它是這項任務的要求。

+0

有沒有一種特定的方式,你的任務說打印它?像在訂單,預購或後訂單一樣。我可能建議順序遞歸不是必要的,但它顯示技能。 – KRUKUSA

+0

@Krukusa - 他說要打印BST的根部,而不是整棵樹,所以我認爲他只需走到根部並打印它。 –

+0

「打印根」絕對不需要在大多數樹實現中遞歸。我假設你應該[遍歷](http://en.wikipedia.org/wiki/Tree_traversal)樹,打印所有節點,但這絕對是要澄清與誰給你的任務。但是,如果您無法直接訪問根目錄,遞歸函數可能會更有意義,但您需要提供更完整的代碼示例來說明如何表示數據。無論哪種方式,我不認爲這個問題可以在目前的狀態下得到回答。 – Dukeling

回答

1

請問node有財產parent?如果是這樣,是Node類型的財產?如果是這樣,答案應該是顯而易見的(如果你適應遞歸)。

請記住,所有遞歸函數都必須具有退出條件。你認爲這個函數的退出條件應該是什麼?

+0

這是一條評論或答覆? – arunmoezhi

+0

海報說:「我不是在尋找特定的代碼,只是爲了一個想法或僞代碼來完成這件事,」明確表示這是一個學校作業。我指出他需要專注於解決這項任務。他將其標記爲答案。 –

+0

我開始認爲讓這個例程遞歸的要求是部分教師的錯誤。它只是沒有意義,因爲可以直接訪問根。我以爲我錯過了明顯的東西,這就是爲什麼我問這個問題。而且,這個答案對於我所要求的假設我們需要打印給定的任意節點的根是有意義的。 –