搜索二叉树的性质:
如果该二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也为二叉搜索树;
搜索二叉树的中序遍历是递增有序的;
递归
左边图蓝色的要大于5小于4,所以这个不是二叉搜索树;递归左子树比较就传递这两个位置的值
右边图,黑色的要大于2小于4;递归右子树比较就传递这两个位置的值
class Solution {
public:
bool helper(TreeNode* root, long long lower, long long uper){
if(root == nullptr)
return true;
if(root->val <= lower || root->val >= uper){
return false;
}
return helper(root->left, lower, root->val) && helper(root->right, root->val, uper);
}
bool isValidBST(TreeNode* root) {
return helper(root, LONG_MIN, LONG_MAX);
}
};