Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "BinarySearchTreeIterator.h"
- template <class ItemType>
- BinarySearchTreeIterator<ItemType>::BinarySearchTreeIterator() {
- tree = nullptr;
- } // end default constructor
- template <class ItemType>
- BinarySearchTreeIterator<ItemType>::BinarySearchTreeIterator(const BinarySearchTree<ItemType>* someTree, std::shared_ptr<BinaryNode<ItemType>> n) {
- tree = someTree;
- fill_stack(n);
- } // end constructor
- template <class ItemType>
- void BinarySearchTreeIterator<ItemType>::fill_stack(std::shared_ptr<BinaryNode<ItemType>> treePtr) {
- if (treePtr != nullptr)
- {
- traversal.push(treePtr);
- fill_stack(treePtr->getLeftChildPtr());
- fill_stack(treePtr->getRightChildPtr());
- } // end if
- }
- template <class ItemType> const ItemType
- BinarySearchTreeIterator<ItemType>::operator*() {
- return traversal.top()->getItem();
- } // end operator *
- template <class ItemType> BinarySearchTreeIterator<ItemType>&
- BinarySearchTreeIterator<ItemType>::operator++() {
- traversal.pop();
- return *this;
- } // end operator ++
- template <class ItemType> bool BinarySearchTreeIterator<ItemType>::operator==(const BinarySearchTreeIterator<ItemType>& rightHandSide) const {
- bool same_obj = traversal.empty() && rightHandSide.traversal.empty();
- if(!same_obj) {
- same_obj = traversal.top() == rightHandSide.traversal.top();
- }
- return same_obj && tree == rightHandSide.tree;
- } // end operator ==
- template <class ItemType> bool BinarySearchTreeIterator<ItemType>::operator!=(const BinarySearchTreeIterator<ItemType>& rightHandSide) const {
- return !operator==(rightHandSide); //for being lazy!
- } // end operator ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement