File tree Expand file tree Collapse file tree 1 file changed +12
-21
lines changed
cpp/neetcode_150/07_trees Expand file tree Collapse file tree 1 file changed +12
-21
lines changed Original file line number Diff line number Diff line change 21
21
class Solution {
22
22
public:
23
23
bool isValidBST (TreeNode* root) {
24
- TreeNode* prev = NULL ;
25
- return inorder (root, prev);
26
- }
27
- private:
28
- bool inorder (TreeNode* root, TreeNode*& prev) {
29
- if (root == NULL ) {
30
- return true ;
31
- }
32
-
33
- if (!inorder (root->left , prev)) {
34
- return false ;
35
- }
36
-
37
- if (prev != NULL && prev->val >= root->val ) {
38
- return false ;
39
- }
40
- prev = root;
24
+ using def = function<bool (TreeNode*,long ,long )>;
41
25
42
- if (!inorder (root->right , prev)) {
43
- return false ;
44
- }
26
+ def valid = [&] (auto node, long left, long right) {
27
+ if (!node){
28
+ return true ;
29
+ }
30
+ if (!(node->val < right && node->val > left)){
31
+ return false ;
32
+ }
33
+ return (valid (node->left , left, node->val ) &&
34
+ valid (node->right , node->val , right));
35
+ };
45
36
46
- return true ;
37
+ return valid (root, long (INT_MIN)- 1 , long (INT_MAX)+ 1 ) ;
47
38
}
48
39
};
49
40
You can’t perform that action at this time.
0 commit comments