Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "iterator.h"
- #include "avltree.h"
- Iterator::Iterator(TreeNode *currentNode)
- {
- while (currentNode != nullptr)
- {
- currentStack.push(*currentNode);
- currentNode = currentNode->left;
- }
- }
- int Iterator::next()
- {
- TreeNode *currentNode = ¤tStack.top();
- currentStack.pop();
- const int result = currentNode->value;
- if (currentNode->right != nullptr)
- {
- currentNode = currentNode->right;
- while (currentNode != nullptr)
- {
- currentStack.push(*currentNode);
- currentNode = currentNode->left;
- }
- }
- return result;
- }
- bool Iterator::isEmpty()
- {
- return currentStack.empty();
- }
- int Iterator::remove()
- {
- TreeNode *currentNode = ¤tStack.top();
- currentStack.pop();
- const int result = currentNode->value;
- AVLTree::remove(currentNode->value);
- if (currentNode->right != nullptr)
- {
- currentNode = currentNode->right;
- while (currentNode != nullptr)
- {
- currentStack.push(*currentNode);
- currentNode = currentNode->left;
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement