validate-binary-search-tree 1.0.0
Validate Binary Search Tree
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1#include <iostream>
2#include <vector>
3#include <stack>
4#include <algorithm>
5
6using namespace std;
7
12{
13 int val;
16 TreeNode() : val(0), left(nullptr), right(nullptr) {}
17 TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
19};
20
22{
23public:
24 bool isValidBST(TreeNode* root)
25 {
26 return validate(root, nullptr, nullptr);
27 }
28
29private:
30 bool validate(TreeNode* node, TreeNode* min_node, TreeNode* max_node)
31 {
32 if (!node)
33 return true;
34 if ((min_node && node->val <= min_node->val) || (max_node && node->val >= max_node->val))
35 return false;
36 return validate(node->left, min_node, node) && validate(node->right, node, max_node);
37 }
38};
39
41{
42 if (root == nullptr)
43 return;
44 delete_tree(root->left);
45 delete_tree(root->right);
46 delete root;
47}
48
49int main()
50{
51 // TreeNode* root = new TreeNode(5, new TreeNode(1), new TreeNode(4, new TreeNode(3), new TreeNode(6)));
52 // TreeNode* root = new TreeNode(5, new TreeNode(1), new TreeNode(6, new TreeNode(3), new TreeNode(7)));
53 // TreeNode* root = new TreeNode(2, new TreeNode(1), new TreeNode(3));
54 TreeNode* root = new TreeNode(5, new TreeNode(4), new TreeNode(6, new TreeNode(3), new TreeNode(7)));
55 Solution sol;
56 cout << "output: " << sol.isValidBST(root) << endl;
57 delete_tree(root);
58 return 0;
59}
bool isValidBST(TreeNode *root)
Definition main.cpp:24
bool validate(TreeNode *node, TreeNode *min_node, TreeNode *max_node)
Definition main.cpp:30
void delete_tree(TreeNode *root)
Definition main.cpp:40
int main()
Definition main.cpp:49
Definition for a binary tree node.
Definition main.cpp:12
int val
Definition main.cpp:13
TreeNode * left
Definition main.cpp:14
TreeNode(int x, TreeNode *left, TreeNode *right)
Definition main.cpp:18
TreeNode * right
Definition main.cpp:15
TreeNode(int x)
Definition main.cpp:17
TreeNode()
Definition main.cpp:16