Advertisement
Tyler_Elric

Untitled

Dec 11th, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "BinarySearchTreeIterator.h"
  2.  
  3. template <class ItemType>
  4. BinarySearchTreeIterator<ItemType>::BinarySearchTreeIterator() {
  5.     tree = nullptr;
  6. } // end default constructor
  7. template <class ItemType>
  8. BinarySearchTreeIterator<ItemType>::BinarySearchTreeIterator(const BinarySearchTree<ItemType>* someTree, std::shared_ptr<BinaryNode<ItemType>> n) {
  9.     tree = someTree;
  10.     fill_stack(n);
  11. } // end constructor
  12.  
  13. template <class ItemType>
  14. void BinarySearchTreeIterator<ItemType>::fill_stack(std::shared_ptr<BinaryNode<ItemType>> treePtr) {
  15. if (treePtr != nullptr)
  16.    {
  17.       traversal.push(treePtr);
  18.       fill_stack(treePtr->getLeftChildPtr());
  19.       fill_stack(treePtr->getRightChildPtr());
  20.    } // end if
  21. }
  22. template <class ItemType> const ItemType
  23. BinarySearchTreeIterator<ItemType>::operator*() {
  24.         return traversal.top()->getItem();
  25. } // end operator *
  26. template <class ItemType> BinarySearchTreeIterator<ItemType>&
  27. BinarySearchTreeIterator<ItemType>::operator++() {
  28.     traversal.pop();
  29.     return *this;
  30. } // end operator ++
  31. template <class ItemType> bool BinarySearchTreeIterator<ItemType>::operator==(const BinarySearchTreeIterator<ItemType>& rightHandSide) const {
  32.     bool same_obj = traversal.empty() && rightHandSide.traversal.empty();
  33.     if(!same_obj) {
  34.         same_obj = traversal.top() == rightHandSide.traversal.top();
  35.     }
  36.     return same_obj && tree == rightHandSide.tree;
  37. } // end operator ==
  38. template <class ItemType> bool BinarySearchTreeIterator<ItemType>::operator!=(const BinarySearchTreeIterator<ItemType>& rightHandSide) const {
  39.         return !operator==(rightHandSide); //for being lazy!
  40. } // end operator ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement