题目描述:
题解:
二叉搜索树的性质是:任何一个节点的左子树中的所有节点值都小于该节点值,其右子树中所有节点值都大于当前节点值(必须满足,节点值相等也不行)。二叉搜索树的中序遍历结果是一个升序序列。
1.首先对二叉搜索树进行中序遍历,保存结果midorder
2.判断midorder是否满足升序。
注意:本来利用sorted将midorder进行排序,对比midorder和sorted后结果是否完全相同,但这种方法不适用于有相同节点值的情况。
class Solution(object): def isValidBST(self, root): midprder = self.midorder(root) num = len(midprder) for i in range(num-1): if midprder[i]>=midprder[i+1]: return False return True return True def midorder(self,root): res = [] if root ==None: return res res = res+self.midorder(root.left) res.append(root.val) res = res+self.midorder(root.right) return res