Validate Binary Search Tree
Understand how to validate binary search trees by ensuring left nodes are less and right nodes are greater than the parent. This lesson guides you through using depth-first search and implementing constraints to confirm a correct BST 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// template<class T>// class TreeNode {// public:// T data;// TreeNode<T>* left;// TreeNode<T>* right;// TreeNode(const T data) : data(data), left(nullptr), right(nullptr) {}// };int ValidateBst(TreeNode<int>* root){// Replace this placeholder return statement with your codereturn false;}