mycode 不会
注意:root的值要比左子树上所有的数大
参考
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None # in valid BST, in-order taversal would go # from node with the smallest value (left most leaf) # up to the node with the biggest value (right most leaf) class Solution(object): def isValidBST(self, root): """ :type root: TreeNode :rtype: bool """ if not root: return True self.inorder = [] def _dfs(node): if node.left: _dfs(node.left) self.inorder.append(node) if node.right: _dfs(node.right) _dfs(root) prev = self.inorder[0].val for node in self.inorder[1:]: print(node.val) if node.val > prev: prev = node.val else: return False return True
# 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 inorder(root, output): if not root: return if root.left: inorder(root.left, output) output += [root.val] if root.right: inorder(root.right, output) output=[] inorder(root, output) for i in range(1,len(output)): if output[i]<=output[i-1]: return False return True
class Solution(object): def isValidBST(self, root): """ :type root: TreeNode :rtype: bool """ import sys min_val = -sys.maxsize max_val = sys.maxsize return self.isValidBST_Util(root, min_val, max_val) def isValidBST_Util(self, root, min_val, max_val): if not root: return True if root.val > min_val and \ root.val < max_val and \ self.isValidBST_Util(root.left, min_val, root.val) and \ self.isValidBST_Util(root.right, root.val, max_val): return True else: return False