Я пытаюсь написать рекурсивный генератор для обхода.
class Tree {
*inOrderTraversal() {
function* helper(node) {
if (node.left !== null) {
// this line is executed, but helper is not being called
helper(node.left);
}
yield node.value;
if (node.right !== null) {
helper(node.right);
}
}
for (let i of helper(this.root)) {
yield i;
}
}
// other methods omitted
}
И я вызываю генератор так:
const tree = new Tree();
tree.add(2);
tree.add(1);
tree.add(3);
for (let i of tree.inOrderTraversal()) {
console.log(i); // only prints 2
}
Почему генератор дает только 2
? Почему это, по крайней мере, не дает 1
до 2
?
Как я могу это исправить?
Если это помогает, я транслирую код с помощью babel.
babel --optional runtime test.js | node