【发布时间】:2021-06-01 16:04:12
【问题描述】:
第二个例子我的解决方案失败了,我不知道为什么,请解释一下。
问题来了:
给定一棵二叉树,确定它是否是有效的二叉搜索树 (BST)。
假设 BST 定义如下:
节点的左子树只包含键小于节点键的节点。节点的右子树只包含键大于节点键的节点。左右子树也必须是二叉搜索树。
示例 1:
2
/ \
1 3
输入:[2,1,3]
输出:真
示例 2:
5
/ \
1 4
/ \
3 6
输入:[5,1,4,null,null,3,6]
输出:假
解释:根节点的值为5,而其右孩子的值为4。
class Solution {
public:
bool util(TreeNode*root,int minv=INT_MIN,int maxv=INT_MAX)
{ if(root==NULL)
return true;
if((root->val >= minv and root->val <= maxv) and
util(root->left,minv,root->val)and util(root->right,root->val,maxv));
return true;
return false;
}
bool isValidBST(TreeNode* root) {
return util(root);
}
};
【问题讨论】: