题目:
给定一颗二叉树,判断其是不是二叉搜索树,即判断是否满足左<根<右。
解题思路:
利用二叉搜索树的性质,直接对该二叉树进行中序遍历,判断其结果是否是有序的,若是,则返回True,否则返回False。
考验是否了解二叉搜索树,以及输出二叉树中序遍历结果的递归函数。
代码(python):
# 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
"""
nums = []
def read_tree(root):
if root == None:
return
if root.left!=None:
read_tree(root.left)
nums.append(root.val)
if root.right!=None:
read_tree(root.right)
if root.left==None:
nums.append(root.val)
if root.right!=None:
read_tree(root.right)
read_tree(root)
for i in range(len(nums)-1):
j = i+1
if nums[j]<=nums[i]:
return False
return True