Advertisement
RobertDeMilo

1guduz

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