View difference between Paste ID: 1vqEpfeY and aCX9LdVW
SHOW: | | - or go back to the newest paste.
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 fill_stack(std::shared_ptr<BinaryNode<ItemType>> treePtr) {
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 ==