(boolean preorder)
| 688 | } |
| 689 | |
| 690 | private List breadthFirstRest(boolean preorder) { |
| 691 | List answer = new NodeList(); |
| 692 | Stack stack = new Stack(); |
| 693 | List nextLevelChildren = preorder ? getDirectChildren() : DefaultGroovyMethods.reverse(getDirectChildren()); |
| 694 | while (!nextLevelChildren.isEmpty()) { |
| 695 | List working = new NodeList(nextLevelChildren); |
| 696 | nextLevelChildren = new NodeList(); |
| 697 | for (Object child : working) { |
| 698 | if (preorder) { |
| 699 | answer.add(child); |
| 700 | } else { |
| 701 | stack.push(child); |
| 702 | } |
| 703 | if (child instanceof Node childNode) { |
| 704 | List children = childNode.getDirectChildren(); |
| 705 | if (children.size() > 1 || (children.size() == 1 && !(children.get(0) instanceof String))) nextLevelChildren.addAll(preorder ? children : DefaultGroovyMethods.reverse(children)); |
| 706 | } |
| 707 | } |
| 708 | } |
| 709 | while (!stack.isEmpty()) { |
| 710 | answer.add(stack.pop()); |
| 711 | } |
| 712 | return answer; |
| 713 | } |
| 714 | |
| 715 | /** |
| 716 | * Calls the provided closure for all the nodes in the tree |
no test coverage detected