2
我在「實踐最後」我是用學習的真正的最後臨到這個問題:什麼是錯用此方法來檢查,如果樹是BST或不
我想不出爲什麼這種方法不起作用。邏輯看起來很好。一個BST只是一個BST,如果每個都留下<父<的權利,這正是這種方法遞歸檢查的方法。
任何提示將不勝感激!
我在「實踐最後」我是用學習的真正的最後臨到這個問題:什麼是錯用此方法來檢查,如果樹是BST或不
我想不出爲什麼這種方法不起作用。邏輯看起來很好。一個BST只是一個BST,如果每個都留下<父<的權利,這正是這種方法遞歸檢查的方法。
任何提示將不勝感激!
重複的值之外,二叉查找樹的definition要求:
左子樹僅包含具有鍵小於父節點的節點;右子樹只包含鍵大於父節點的節點。
您問題中的代碼沒有檢查。考慮下面的樹:
2
/
1
\
3
這將通過測試,但不是有效的BST:這是一個BST,3
必須是在2
的右子樹。
有關正確實施的示例,請參閱https://stackoverflow.com/a/759851/367273。
也許'假'分支也應該檢查是否相等 – 2014-12-07 07:01:28
好吧,我不認爲這是它。我相信剩下<=父<=右的BST仍然具有常規BST的所有屬性。 – MathMajor 2014-12-07 07:07:58
假設你有這樣的BST:'{0} | {-2,2} | {,1},{-1,}'。然後'root-> left-> right> root'但是通過了你的測試。 – 2014-12-07 07:09:22