Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. template<class T>
  2. class LRoRIterator {
  3.     std::stack<Task<T>> container;
  4.     void windStack() {
  5.         while (!container.empty() && container.top().toPrint == false) {
  6.             std::vector<Task<T>> level;
  7.             while (!container.empty()) {
  8.                 level.push_back(container.top());
  9.                 container.pop();
  10.             }//Във вектора се намират елементите от съответното ниво
  11.             for (Task<T> t : level) {
  12.                 if (t.node->right) container.push(Task<T>(t.node->right, false));
  13.                 if (t.node->left) container.push(Task<T>(t.node->left, false));
  14.             }//В стека сме добавили наследниците на елементите от вектора, тоест заредили сме за обработка елементите от следв. ниво
  15.             //Във вектора са ти елементите от нивото, които следва да се обработят
  16.             int countDifferent = findDifferent(level);//Функцията, която ти приема вектора с елементите от нивото и връща това, което е по условие - мисля че беше да намери броя на уникалните елементи. Мисля, че можеш да се справиш със функцията.
  17.             TreeNode<T>* result = new TreeNode(countDifferent,nullptr,nullptr);
  18.             container.push(new Task<T>(result,true);//Нарочно добавям задача, за да запазя консистентността на стека.
  19.         }
  20.     }
  21. public:
  22.     LRoRIterator(TreeNode<T>* start) {
  23.         if (start) {
  24.             Task<T> firstState(start, false);
  25.             container.push(firstState);
  26.             windStack();
  27.         }
  28.     }
  29.     void operator ++(int) {
  30.         if (!container.empty()) {
  31.             container.pop();
  32.             windStack();
  33.         }
  34.     }
  35.     T operator * () {
  36.         return container.top().node->data;
  37.     }
  38. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement