Validate Binary Search Tree
Explore how to determine if a binary tree meets the properties of a binary search tree. Learn to check node values recursively, ensuring left subtree values are less and right subtree values are greater, while validating the entire tree structure.
We'll cover the following...
Statement
Given the root of a binary tree, check whether it is a valid binary search tree (BST).
A binary tree is a valid BST if for every node:
-
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 are valid BSTs.
Constraints:
-
Node.data -
The tree contains nodes in the range .
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:
Valid Binary Search Tree
Is the following binary tree a valid binary search tree?
9
/ \
2 10
/ \
7 20
True
False
Figure it out!
We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.
Try it yourself
Implement your solution in the following coding playground.
# Definition for a binary tree node# class TreeNode:# def __init__(self, data):# self.data = data# self.left = None# self.right = Nonefrom ds_v1.BinaryTree.BinaryTree import TreeNodeimport mathdef validate_bst(root):# Replace this placeholder return statement with your codereturn False