思路——确定上下界
- 当前结点,大于左子树,小于右子树的值
- 那么左子树呢?——也需要大于它的左子树,小于它的右子树
- 那么右子树呢?——也需要大于它的左子树,小于它的右子树
- 如何定义递归的参数?——上界与下届
- 递归结束条件?——true? false?——超过上下界范围
代码
class Solution {
public:
bool helper(TreeNode* root, long long lower, long long upper) {
if (root == nullptr)
return true;
if (root -> val <= lower || root -> val >= upper)
return false;
return helper(root -> left, lower, root -> val) && helper(root -> right, root -> val, upper);
}
bool isValidBST(TreeNode* root) {
return helper(root, LONG_MIN, LONG_MAX);
}
};
803

被折叠的 条评论
为什么被折叠?



