要求
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入:root = [2,1,3]
输出:true
示例 2:
输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。
核心代码
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
inorder = list()
self.inorderTra(root,inorder)
for i in range(len(inorder)-1):
if inorder[i] >= inorder[i+1]:
return False
return True
def inorderTra(self,root,inorder):
if not root:
return None
self.inorderTra(root.left,inorder)
inorder.append(root.val)
self.inorderTra(root.right,inorder)
return
解题思路:这个题的解题思路使用的就是中序遍历,因为我们的左子树的值都比根节点小,右子树的值都比根节点大,所以如果是二叉搜索树的中序遍历后得到的就是排好序的列表,我们只需要检测这个数据是不是从小到大的就行了。