Advertisement
Guest User

Untitled

a guest
Sep 1st, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #ifndef BST_H
  2. #define BST_H
  3. template <typename T>
  4. class treeNode {
  5. public:
  6. treeNode *left;
  7. treeNode *right;
  8. T key;
  9. treeNode(T key)
  10. : key(key)
  11. , left(nullptr)
  12. , right(nullptr) {
  13. }
  14. };
  15.  
  16. template <typename T>
  17. class BST {
  18. public:
  19. BST() {
  20. root = nullptr;
  21. nodes = 0;
  22. }
  23.  
  24. BST(BST const& rhs)
  25. : nodes(rhs.size()) {
  26. // not yet implemented
  27. }
  28.  
  29. BST& operator = (BST rhs) {
  30. this->swap(rhs);
  31. }
  32.  
  33. BST& operator = (BST&& rhs) {
  34. this->swap(rhs);
  35. }
  36.  
  37. ~BST() {
  38. clear(root);
  39. }
  40.  
  41. void swap(BST& other) {
  42. std::swap(root, other.root);
  43. std::swap(nodes, other.nodes);
  44. }
  45.  
  46. void clear(treeNode<T>* node) {
  47. if(node) {
  48. if(node->left) clear(node->left);
  49. if(node->right) clear(node->right);
  50. delete node;
  51. }
  52. }
  53.  
  54. bool isEmpty() const {
  55. return root == nullptr;
  56. }
  57. void inorder(treeNode<T>*);
  58. void traverseInorder();
  59.  
  60. void preorder(treeNode<T>*);
  61. void traversePreorder();
  62.  
  63. void postorder(treeNode<T>*);
  64. void traversePostorder();
  65.  
  66. void insert(T const& );
  67.  
  68. void remove(T const& );
  69.  
  70. treeNode<T>* search(const T &);
  71.  
  72. treeNode<T>* minHelper(treeNode<T>*);
  73. treeNode<T>* min();
  74.  
  75. treeNode<T>* maxHelper(treeNode<T>*);
  76. treeNode<T>* max();
  77.  
  78. size_t size() const;
  79.  
  80. void sort();
  81. treeNode<T>* inOrderSuccessor(treeNode<T>*);
  82. bool isBST(treeNode<T>*) const;
  83. bool isBST() const;
  84.  
  85. private:
  86. treeNode<T> *root;
  87. size_t nodes;
  88. };
  89. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement