19 PreorderStrategy::PreorderStrategy() =
default;
30 return iterator_stack;
35 const INode* node = iterator_stack.getCurrent();
37 std::vector<const INode*> children = node->
getChildren();
38 if (children.size() > 0) {
42 iterator_stack.next();
43 while (!iterator_stack.empty() && iterator_stack.get_state().isEnd()) {
44 iterator_stack.pop_state();
45 if (!iterator_stack.empty())
46 iterator_stack.next();
52 return iterator_stack.empty();
55 PostorderStrategy::PostorderStrategy() =
default;
66 std::vector<const INode*> children = p_root->
getChildren();
67 while (children.size() > 0) {
69 children = iterator_stack.getCurrent()->
getChildren();
71 return iterator_stack;
76 iterator_stack.next();
77 if (iterator_stack.get_state().isEnd()) {
78 iterator_stack.pop_state();
81 std::vector<const INode*> children = iterator_stack.getCurrent()->
getChildren();
82 while (children.size() > 0) {
84 children = iterator_stack.getCurrent()->
getChildren();
90 return iterator_stack.empty();
Defines the macro ASSERT.
Defines class IterationStrategy and children.
Defines classes IteratorState, IteratorMemento and NodeIterator.
Base class for tree-like structures containing parameterized objects.
virtual std::vector< const INode * > getChildren() const
Returns a vector of children (const).
Holds all iterator states encountered for SampleTreeIterator.
Holds state of iterator at single level for SampleTreeIterator.
Traverse tree; visit children before their parents.
Traverse tree; visit parents before their children.