Skip to content

Commit 0cc5d87

Browse files
committed
Validate Binary Search Tree
1 parent 69013fa commit 0cc5d87

File tree

62 files changed

+579
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+579
-0
lines changed
Binary file not shown.
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
struct TreeNode {
2+
* int val;
3+
* TreeNode *left;
4+
TreeNode *right;
5+
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
6+
};
7+
8+
class Solution {
9+
public:
10+
bool isValidBST(TreeNode* root, int &min, int &max)
11+
{
12+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
13+
14+
min = root->val; max = root->val;
15+
16+
int left_min = 0, left_max = 0;
17+
18+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
19+
{
20+
return false;
21+
}
22+
23+
min = min < left_min ? min : left_min;
24+
max = max > left_max ? max : left_max;
25+
26+
int right_min = 0, right_max = 0;
27+
28+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
29+
{
30+
return false;
31+
}
32+
33+
min = min < right_min ? min : right_min;
34+
max = max > right_max ? max : right_max;
35+
36+
return true;
37+
38+
}
39+
40+
bool isValidBST(TreeNode *root) {
41+
42+
int min = 0, max = 0;
43+
44+
return isValidBST(root, min, max);
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Validate_Binary_Search_Tree.cpp
3+
*
4+
* Created on: 2014-2-1
5+
* Author: Jie Feng
6+
*/
7+
8+
9+
10+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include<stdlib.h>
2+
#include<climits>
3+
4+
struct TreeNode {
5+
int val;
6+
TreeNode *left;
7+
TreeNode *right;
8+
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
9+
};
10+
11+
class Solution {
12+
public:
13+
bool isValidBST(TreeNode* root, int &min, int &max)
14+
{
15+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
16+
17+
min = root->val; max = root->val;
18+
19+
int left_min = 0, left_max = 0;
20+
21+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
22+
{
23+
return false;
24+
}
25+
26+
min = min < left_min ? min : left_min;
27+
max = max > left_max ? max : left_max;
28+
29+
int right_min = 0, right_max = 0;
30+
31+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
32+
{
33+
return false;
34+
}
35+
36+
min = min < right_min ? min : right_min;
37+
max = max > right_max ? max : right_max;
38+
39+
return true;
40+
41+
}
42+
43+
bool isValidBST(TreeNode *root) {
44+
45+
int min = 0, max = 0;
46+
47+
return isValidBST(root, min, max);
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include<stdlib.h>
2+
#include<climits>
3+
struct TreeNode {
4+
int val;
5+
TreeNode *left;
6+
TreeNode *right;
7+
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8+
};
9+
10+
class Solution {
11+
public:
12+
bool isValidBST(TreeNode* root, int &min, int &max)
13+
{
14+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
15+
16+
min = root->val; max = root->val;
17+
18+
int left_min = 0, left_max = 0;
19+
20+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
21+
{
22+
return false;
23+
}
24+
25+
min = min < left_min ? min : left_min;
26+
max = max > left_max ? max : left_max;
27+
28+
int right_min = 0, right_max = 0;
29+
30+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
31+
{
32+
return false;
33+
}
34+
35+
min = min < right_min ? min : right_min;
36+
max = max > right_max ? max : right_max;
37+
38+
return true;
39+
40+
}
41+
42+
bool isValidBST(TreeNode *root) {
43+
44+
int min = 0, max = 0;
45+
46+
return isValidBST(root, min, max);
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
struct TreeNode {
2+
* int val;
3+
* TreeNode *left;
4+
* TreeNode *right;
5+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
6+
* };
7+
8+
class Solution {
9+
public:
10+
bool isValidBST(TreeNode* root, int &min, int &max)
11+
{
12+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
13+
14+
min = root->val; max = root->val;
15+
16+
int left_min = 0, left_max = 0;
17+
18+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
19+
{
20+
return false;
21+
}
22+
23+
min = min < left_min ? min : left_min;
24+
max = max > left_max ? max : left_max;
25+
26+
int right_min = 0, right_max = 0;
27+
28+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
29+
{
30+
return false;
31+
}
32+
33+
min = min < right_min ? min : right_min;
34+
max = max > right_max ? max : right_max;
35+
36+
return true;
37+
38+
}
39+
40+
bool isValidBST(TreeNode *root) {
41+
42+
int min = 0, max = 0;
43+
44+
return isValidBST(root, min, max);
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
struct TreeNode {
2+
* int val;
3+
TreeNode *left;
4+
TreeNode *right;
5+
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
6+
};
7+
8+
class Solution {
9+
public:
10+
bool isValidBST(TreeNode* root, int &min, int &max)
11+
{
12+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
13+
14+
min = root->val; max = root->val;
15+
16+
int left_min = 0, left_max = 0;
17+
18+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
19+
{
20+
return false;
21+
}
22+
23+
min = min < left_min ? min : left_min;
24+
max = max > left_max ? max : left_max;
25+
26+
int right_min = 0, right_max = 0;
27+
28+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
29+
{
30+
return false;
31+
}
32+
33+
min = min < right_min ? min : right_min;
34+
max = max > right_max ? max : right_max;
35+
36+
return true;
37+
38+
}
39+
40+
bool isValidBST(TreeNode *root) {
41+
42+
int min = 0, max = 0;
43+
44+
return isValidBST(root, min, max);
45+
}

.metadata/.plugins/org.eclipse.core.resources/.history/80/f07b4e84be8b00131f26b800868fbf5f

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include<vector>
2+
3+
using namespace std;
4+
5+
void swap(int i, int j, vector<int>&num)
6+
{
7+
int temp = num[i];
8+
num[i] = num[j];
9+
num[j] = temp;
10+
}
11+
12+
void nextPermutation(vector<int> &num) {
13+
14+
int i = 0, j = 0;
15+
16+
for(i = num.size() - 2; i >= 0; i--)
17+
{
18+
if(num[i] < num[i+1]) break;
19+
}
20+
21+
if(i >= 0)
22+
{
23+
for(j = num.size() - 1; j > i; j--)
24+
{
25+
if(num[j] > num[i]) break;
26+
}
27+
28+
swap(i,j,num);
29+
}
30+
31+
reverse(num.begin() + i + 1, num.end());
32+
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
struct TreeNode {
2+
int val;
3+
TreeNode *left;
4+
TreeNode *right;
5+
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
6+
};
7+
8+
class Solution {
9+
public:
10+
bool isValidBST(TreeNode* root, int &min, int &max)
11+
{
12+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
13+
14+
min = root->val; max = root->val;
15+
16+
int left_min = 0, left_max = 0;
17+
18+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
19+
{
20+
return false;
21+
}
22+
23+
min = min < left_min ? min : left_min;
24+
max = max > left_max ? max : left_max;
25+
26+
int right_min = 0, right_max = 0;
27+
28+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
29+
{
30+
return false;
31+
}
32+
33+
min = min < right_min ? min : right_min;
34+
max = max > right_max ? max : right_max;
35+
36+
return true;
37+
38+
}
39+
40+
bool isValidBST(TreeNode *root) {
41+
42+
int min = 0, max = 0;
43+
44+
return isValidBST(root, min, max);
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
struct TreeNode {
2+
* int val;
3+
* TreeNode *left;
4+
* TreeNode *right;
5+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
6+
* };
7+
*/
8+
class Solution {
9+
public:
10+
bool isValidBST(TreeNode* root, int &min, int &max)
11+
{
12+
if(root == NULL) {min = INT_MAX; max = INT_MIN; return true;}
13+
14+
min = root->val; max = root->val;
15+
16+
int left_min = 0, left_max = 0;
17+
18+
if( ! isValidBST(root->left, left_min, left_max) || left_max >= root->val)
19+
{
20+
return false;
21+
}
22+
23+
min = min < left_min ? min : left_min;
24+
max = max > left_max ? max : left_max;
25+
26+
int right_min = 0, right_max = 0;
27+
28+
if( ! isValidBST(root->right, right_min, right_max) || right_min <= root->val )
29+
{
30+
return false;
31+
}
32+
33+
min = min < right_min ? min : right_min;
34+
max = max > right_max ? max : right_max;
35+
36+
return true;
37+
38+
}
39+
40+
bool isValidBST(TreeNode *root) {
41+
42+
int min = 0, max = 0;
43+
44+
return isValidBST(root, min, max);
45+
}

0 commit comments

Comments
 (0)