35657

Untitled

Oct 6th, 2022
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <cassert>
  2.  
  3. template <typename T>
  4. struct TreeNode {
  5.     T value;
  6.     TreeNode* left = nullptr;
  7.     TreeNode* right = nullptr;
  8. };
  9.  
  10. template <typename T>
  11. void DeleteTree(TreeNode<T>* node) {
  12.     if (!node) {
  13.         return;
  14.     }
  15.     DeleteTree(node->left);
  16.     DeleteTree(node->right);
  17.     delete node;
  18. }
  19.  
  20. template <typename T>
  21. bool CheckTreeProperty(const TreeNode<T>* node) {
  22.     bool a = true;
  23.     if (node->left != nullptr) {
  24.         if (node->left->value > node->value) {
  25.             return false;
  26.         }
  27.         a = CheckTreeProperty(node->left);
  28.     }
  29.     if (node->right != nullptr) {
  30.         if (node->right->value < node->value) {
  31.             return false;
  32.         }
  33.         a = CheckTreeProperty(node->right);
  34.     }
  35.     return a;
  36. }
  37.  
  38. int main() {
  39.     using T = TreeNode<int>;
  40.     T* root1 = new T{6,
  41.         new T{4, new T{3}, new T{5}}, new T{7}};
  42.     assert(CheckTreeProperty(root1));
  43.  
  44.     T* root2 = new T{6,
  45.         new T{4, new T{3}, new T{5}}, new T{7, new T{8}}};
  46.     assert(!CheckTreeProperty(root2));
  47.  
  48.     DeleteTree(root1);
  49.     DeleteTree(root2);
  50. }
Advertisement
Add Comment
Please, Sign In to add comment