LeetCode——98. Validate Binary Search Tree(C++)
Description:
Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node’s key.
The right subtree of a node contains only nodes with keys greater than the node’s key.
Both the left and right subtrees must also be binary search trees.
Input: root = [2,1,3]
Output: true
Input: root = [5,1,4,null,null,3,6]
Output: false
Explanation: The root node’s value is 5 but its right child’s value is 4.
Constraints:
The number of nodes in the tree is in the range [1, 104].
-231 <= Node.val <= 231 - 1
题目解析:
就是判断是否是二叉搜索树,此题的val不可相等。dfs判断,floor和celine限制最左和最右边界。
代码:
class Solution {
bool dfs(long floor,long celine,TreeNode* cur)
{
if(cur->val>=celine||cur->val<=floor)return false;
bool lb=true,rb=true;
if(cur->left!=NULL)
{
if(cur->val<=cur->left->val)return false;
else
lb=dfs(floor,cur->val,cur->left);
}
if(cur->right!=NULL)
{
if(cur->val>=cur->right->val)return false;
else
rb=dfs(cur->val,celine,cur->right);
}
return lb&&rb;
}
public:
bool isValidBST(TreeNode* root) {
return dfs(-999999999999999999,99999999999999999,root);
}
};
submissions: