Advertisement
dreadmachine

check_equal_tree.cpp

Dec 10th, 2021
592
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Tree {
  4. private:
  5.   struct TreeNode {
  6.     int val;
  7.     TreeNode *l, *r;
  8.     TreeNode(int val, TreeNode *l = nullptr, TreeNode *r = nullptr) :
  9.       val(val), l(l), r(r) {}
  10.   };
  11.   size_t size;
  12.   TreeNode *root;
  13.   TreeNode *__insert(TreeNode *root, TreeNode *node) {
  14.     if(!root)
  15.       return node;
  16.     if(node->val < root->val)
  17.       root->l = __insert(root->l, node);
  18.     else
  19.       root->r = __insert(root->r, node);
  20.     return root;
  21.   }
  22.   bool __all_nodes_equal(TreeNode *root, int key) {
  23.     if(!root) return true;
  24.     if(root->val != key)
  25.       return false;
  26.     else
  27.       return __all_nodes_equal(root->l, key) && __all_nodes_equal(root->r, key);
  28.   }
  29. public:
  30.   Tree() : size(0), root(nullptr) {}
  31.   void insert(int val) {
  32.     root = __insert(root, new TreeNode(val));
  33.   }
  34.   bool all_nodes_equal() {
  35.     return __all_nodes_equal(root, root->val);
  36.   }
  37. };
  38.  
  39. int main() {
  40.   Tree t;
  41.   int val;
  42.   while(std::cin >> val) {
  43.     t.insert(val);
  44.   }
  45.   std::cout << t.all_nodes_equal();
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement