Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a 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.
Analysis:
给你一颗二叉树,判断是否是一颗二叉搜索树。
方法1:利用二叉树的特点,中序遍历有序;
方法2:左子树都小于根节点的值,右子树都大于根节点的值。
Solution:
可以查看:面试题25-II:判断是否是二叉搜索树
class Solution {
public:
bool isValidBST(TreeNode* root) {
return helper(root, LONG_MIN, LONG_MAX);
}
bool helper(TreeNode *root, long min_val, long max_val) {
if (root == NULL)
return true;
if (root->val <= min_val || root->val >= max_val) {
return false;
}
return helper(root->left, min_val, root->val) && helper(root->right, root->val, max_val);
}
};