Advertisement
Guest User

Untitled

a guest
May 27th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include "iterator.h"
  2. #include "avltree.h"
  3.  
  4. Iterator::Iterator(TreeNode *currentNode)
  5. {
  6.     while (currentNode != nullptr)
  7.     {
  8.         currentStack.push(*currentNode);
  9.         currentNode = currentNode->left;
  10.     }
  11. }
  12.  
  13. int Iterator::next()
  14. {
  15.     TreeNode *currentNode = &currentStack.top();
  16.     currentStack.pop();
  17.     const int result = currentNode->value;
  18.     if (currentNode->right != nullptr)
  19.     {
  20.         currentNode = currentNode->right;
  21.         while (currentNode != nullptr)
  22.         {
  23.             currentStack.push(*currentNode);
  24.             currentNode = currentNode->left;
  25.         }
  26.     }
  27.     return result;
  28. }
  29.  
  30. bool Iterator::isEmpty()
  31. {
  32.     return currentStack.empty();
  33. }
  34.  
  35. int Iterator::remove()
  36. {
  37.     TreeNode *currentNode = &currentStack.top();
  38.     currentStack.pop();
  39.     const int result = currentNode->value;
  40.     AVLTree::remove(currentNode->value);
  41.     if (currentNode->right != nullptr)
  42.     {
  43.         currentNode = currentNode->right;
  44.         while (currentNode != nullptr)
  45.         {
  46.             currentStack.push(*currentNode);
  47.             currentNode = currentNode->left;
  48.         }
  49.     }
  50.     return result;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement