LeetCode Validate Binary Search Tree

来源:互联网 发布:app打车软件 编辑:程序博客网 时间:2024/05/16 05:44

LeetCode解题之Validate Binary Search Tree


原题

判断一棵二叉搜索树是否有效。有效是指每个节点的值大于左节点,小于右节点(如果有对应节点的话),且它的左节点和右节点也满足这种条件。

注意点:

例子:

输入:

  2 / \1   3

输出: True

解题思路

在 Binary Tree Inorder Traversal 的基础上进行了修改。在树的中序遍历中,节点的顺序是左节点、根节点、右节点。这就说明一棵二叉搜索树要符合要求时,它的中序遍历序列一定是递增的。如果在中序遍历中出现前面的节点大于后面的节点,则说明不符合要求。

AC源码

# Definition for a binary tree node.class TreeNode(object):    def __init__(self, x):        self.val = x        self.left = None        self.right = Noneclass Solution(object):    def isValidBST(self, root):        """        :type root: TreeNode        :rtype: bool        """        stack = []        curr = root        prev = None        while curr or stack:            while curr:                stack.append(curr)                curr = curr.left            if stack:                curr = stack.pop()                if prev and curr.val <= prev.val:                    return False                prev = curr                curr = curr.right        return Trueif __name__ == "__main__":    None

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

0 0
原创粉丝点击