文章

98-validate-binary-search-tree

98-validate-binary-search-tree

Given the root of a binary tree, determine if it is a valid binary search tree (BST).

A valid BST is defined as follows:

The left subtree of a node contains only nodes with keys less than the node’s key. The right subtree of a node contains only nodes with keys greater than the node’s key. Both the left and right subtrees must also be binary search trees.

Example 1:

Input: root = [2,1,3] Output: true Example 2:

Input: root = [5,1,4,null,null,3,6] Output: false Explanation: The root node’s value is 5 but its right child’s value is 4.

My solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def __init__(self):
        self.arr = []
    def extract(self,root):
        if not root:
            return
        if root.left:
            self.extract(root.left)

        self.arr.append(root.val)

        if root.right:
            self.extract(root.right)
    def isValidBST(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: bool
        """
        if not root:
            return True
        
        self.extract(root)
        if sorted(self.arr) == self.arr and len(self.arr) == len(list(set(self.arr))):
            return True
        else:
            return False
        

本文由作者按照 CC BY 4.0 进行授权