1、
Validate Binary Search Tree
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.
分析:二叉树采用递归的方法,注意,递归时判断左孩子值小于结点值,右孩子值大于结点值,然后递归判断左右子树是否是搜索二叉树,但是有两个值需要判断,要保留最小最大值,每次检查左右孩子是否在此值之间。
class Solution {
public:
bool isValidBST(TreeNode *root) {
int minValue = INT_MIN;
int maxValue = INT_MAX;
return isValidBST(root,maxValue,minValue);
}
bool isValidBST(TreeNode *root,int maxValue,int minValue){
if(!root){
return true;
}
bool isLeft = true;
if(root->left){
if(root->left->val >= root->val || root->left->val <= minValue){
return false;
}
isLeft = isValidBST(root->left,root->val,minValue);
}
bool isRight = true;
if(root->right){
if(root->right->val <= root->val || root->right->val >= maxValue){
return false;
}
isRight = isValidBST(root->right,maxValue,root->val);
}
if(isLeft && isRight){
return true;
}else{
return false;
}
}
};