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 == |