/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
void find_max(struct TreeNode *root, int *val){
if(!root){
return;
}
if(root->val > *val){
*val = root->val;
}
find_max(root->left, val);
find_max(root->right, val);
}
void find_min(struct TreeNode *root, int *val){
if(!root)
return;
if(root->val < *val)
*val = root->val;
find_min(root->left, val);
find_min(root->right, val);
}
bool isValidBST(struct TreeNode* root){
int min = INT_MAX;
int max = INT_MIN;
if(!root || (!root->left && !root->right)){
return true;
}
find_max(root->left, &max);
find_min(root->right, &min);
printf("max = %d, min = %d \n", max, min);
bool ret = true;
if(root->right){
ret &= isValidBST(root->right) && root->val < min;
if(!root->left)
return ret;
}
if(root->left){
ret &= isValidBST(root->left) && root->val > max;
if(!root->right)
return ret;
}
return ret;
}
LeetCode-98-验证二叉搜索树-C语言
猜你喜欢
转载自blog.csdn.net/weixin_36094222/article/details/90137682
今日推荐
周排行