Skip to content

Commit 3dbe8c4

Browse files
authored
Fix implementation of tree preorder stacking. (#160)
Fixes #149
1 parent fafd457 commit 3dbe8c4

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/trees.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -647,10 +647,13 @@ impl NodeIterator for PreorderNodeIterator<'_> {
647647
self.current_node_ = self.node_stack.pop();
648648
match self.current_node_ {
649649
Some(u) => {
650-
let mut c = self.tree.left_child(u).unwrap();
650+
// NOTE: process children right-to-left
651+
// because we later pop them from a steck
652+
// to generate the expected left-to-right ordering.
653+
let mut c = self.tree.right_child(u).unwrap();
651654
while c != NodeId::NULL {
652655
self.node_stack.push(c);
653-
c = self.tree.right_sib(c).unwrap();
656+
c = self.tree.left_sib(c).unwrap();
654657
}
655658
}
656659
None => {

0 commit comments

Comments
 (0)