LeetCode 98-Validate Binary Search Tree
题干:
判断给定的BST是否合法。
解:
BST是,对于某个节点 r o o t root root,它的整个左子树的值都要小于它,整个右子树的值都要大于它,所以不能只判断该节点与左右孩子的关系。
那么如何把这种 r o o t root root的约束传递给左右子树呢?就需要引入额外的参数,把约束传递下去。
bool isValidBST(TreeNode* root) {
return isValid(root, nullptr, nullptr);
}
bool isValid(TreeNode* root, TreeNode* low, TreeNode* high){
if(!root) return 1;
if(high && root->val >= high->val) return 0;
if(low && root->val <= low->val) return 0;
return isValid(root->left, low, root) && isValid(root->right, root, high);
}