2014-12-07 21 views
2

我在「實踐最後」我是用學習的真正的最後臨到這個問題:什麼是錯用此方法來檢查,如果樹是BST或不

enter image description here

我想不出爲什麼這種方法不起作用。邏輯看起來很好。一個BST只是一個BST,如果每個都留下<父<的權利,這正是這種方法遞歸檢查的方法。

任何提示將不勝感激!

+0

也許'假'分支也應該檢查是否相等 – 2014-12-07 07:01:28

+0

好吧,我不認爲這是它。我相信剩下<=父<=右的BST仍然具有常規BST的所有屬性。 – MathMajor 2014-12-07 07:07:58

+0

假設你有這樣的BST:'{0} | {-2,2} | {,1},{-1,}'。然後'root-> left-> right> root'但是通過了你的測試。 – 2014-12-07 07:09:22

回答

3

重複的值之外,二叉查找樹的definition要求:

左子樹僅包含具有鍵小於父節點的節點;右子樹只包含鍵大於父節點的節點。

您問題中的代碼沒有檢查。考慮下面的樹:

2 
/
1 
\ 
    3 

這將通過測試,但不是有效的BST:這是一個BST,3必須是在2右子樹

有關正確實施的示例,請參閱https://stackoverflow.com/a/759851/367273

相關問題