diff options
Diffstat (limited to 'works/solutions')
| -rw-r--r-- | works/solutions/cpp/98.cpp | 29 | 
1 files changed, 29 insertions, 0 deletions
| diff --git a/works/solutions/cpp/98.cpp b/works/solutions/cpp/98.cpp new file mode 100644 index 0000000..73cefa0 --- /dev/null +++ b/works/solutions/cpp/98.cpp @@ -0,0 +1,29 @@ +#include <cstddef> + +struct TreeNode +{ +    int val; +    TreeNode *left; +    TreeNode *right; +    TreeNode(int x) : val(x), left(NULL), right(NULL) {} +}; + +#include <limits> + +class Solution +{ +public: +    bool dfs(TreeNode *node, long long min, long long max) +    { +        if (node == nullptr) +            return true; +        if (node->val <= min || node->val >= max) +            return false; +        return dfs(node->left, min, node->val) && dfs(node->right, node->val, max); +    } + +    bool isValidBST(TreeNode *root) +    { +        return dfs(root, std::numeric_limits<long long>::min(), std::numeric_limits<long long>::max()); +    } +}; | 
