這道題有兩種思路:
1)利用二叉搜尋樹的性質,即:中序遍歷為公升序。
我們先求得中序遍歷(遞迴or非遞迴),再判斷是否為公升序。
# definition for a binary tree node.
# class treenode(object):
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class solution(object):
def isvalidbst(self, root):
""":type root: treenode
:rtype: bool
"""def zhongxu(root,result=):
if root==none:
return result
result=zhongxu(root.left)
result=zhongxu(root.right)
return result
result=zhongxu(root)
return [result[i]2)按照二叉搜尋樹的定義,左子樹上的值都是小於根結點,右子樹上的值都是大於根結點。
class solution
else
}bool isvalidbst(treenode* root)
};```
3)我一開寫的只考慮了左中右判斷,沒有考慮根結點大小的錯誤**如下:(比如[10,5,15,null,null,6,20]測試用例過不了)
# definition for a binary tree node.
# class treenode(object):
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class solution(object):
def isvalidbst(self, root):
""":type root: treenode
:rtype: bool
"""if root==none:
return true
if root.left!=none and root.left.val>=root.val:
return false
if root.right!=none and root.right.val<=root.val:
return false
return self.isvalidbst(root.left) and self.isvalidbst(root.right)
leetcode 98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 1 3 輸出 true 示例 2 輸入 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 關鍵資訊 1二叉搜尋樹的中序遍歷是遞...
leetcode 98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 解題思路 中序遍歷遞增,每次只...
leetcode 98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 如果對二叉搜尋樹不夠了解,可能...