Leetcode 98. 验证二叉搜索树
题目
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
测试样例
1.
输入:
2
/ \
1 3
输出: true
2.
输入:
5
/ \
1 4
/ \
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
题解
中序遍历,保证序列递增即可。也就是我们记录一下前一遍历节点的值,如果当前节点大于等于该值,则return false
代码
long pre = (long)INT_MIN-1;
bool search(TreeNode* root){
if(root == NULL) return true;
if(!search(root->left)) return false;
if(pre >= root->val) return false;
pre = root->val;
if(!search(root->right)) return false;
return true;
}
bool isValidBST(TreeNode* root) {
return search(root);
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。