我寫的這個驗證演算法是有問題的,僅僅驗證了二叉搜尋樹中的每乙個節點的左孩子的值小於當前節點的值,右孩子的值大於當前節點的值。
還有個條件我是沒有考慮到的。那就是當前節點的值是得大於左子樹的全部節點的值的,並且小於右子樹的全部節點值的。
不過呢,就實現這個錯誤的驗證,也是花了我一點時間的。
其中遇到的問題是,不知道在**返回true。
這裡面有個問題就是,僅僅驗證當前節點的值大於左孩子節點的值,並且小於右孩子節點的值,成功後是不能返回true 的,因為得驗證二叉搜尋樹的全部節點都成功之後,才能返回true。
只有在驗證,有的節點不滿足當前節點的值大於左孩子的值或者小於右孩子的值的時候,才能返回false。
class solution:
def isvalidbst(self, root):
""":type root: treenode
:rtype: bool
"""if not root:
return true
if root.left:
if root.left.val < root.val:#當時
if not self.isvalidbst(root.left):#問題就出現在這裡,既然只有失敗才能返回false,那麼就只在失敗的時候返回就是了
return false
else:
return false
if root.right:
if root.right.val > root.val:
if not self.isvalidbst(root.right):
return false
else:
return false
return true
驗證二叉搜尋樹
題目 給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false ...
驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸...
驗證二叉搜尋樹
leetcode 98題 給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。必然從二叉搜尋樹的特性出發。容易知道,二叉搜尋樹的中序遍歷是乙個遞增的陣列。所...