Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <fstream>
- using namespace std;
- const int leftkey = -1000000001;
- const int rightkey = 1000000001;
- struct tree
- {
- int key;
- int left;
- int right;
- };
- bool correct(int num,vector<tree>*tree,int lkey,int rkey) {
- bool leftsubtree=true;
- bool rightsubtree = true;
- if ((*tree)[num].key <= lkey || (*tree)[num].key >= rkey) {
- return false;
- }
- else {
- if ((*tree)[num].left != 0) {
- leftsubtree = correct((*tree)[num].left, tree, lkey, (*tree)[num].key);
- }
- if ((*tree)[num].right != 0) {
- rightsubtree = correct((*tree)[num].right, tree, (*tree)[num].key, rkey);
- }
- return leftsubtree & rightsubtree;
- }
- }
- int main() {
- ifstream fin("check.in");
- ofstream fout("check.out");
- int n;
- fin >> n;
- vector<tree> ttree;
- tree treelevel;
- ttree.push_back(treelevel);
- for (int i = 0; i < n; i++) {
- fin >> treelevel.key >> treelevel.left >> treelevel.right;
- ttree.push_back(treelevel);
- }
- if (n != 0) {
- if (correct(1, &ttree, leftkey, rightkey)) {
- fout << "YES";
- } else {
- fout << "NO";
- }
- }
- else {
- fout << "YES";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement