我试图编写一个用于中序遍历的递归生成器。
如何修复它?
如果有帮助的话,我正在使用Babel转译代码。
我试图编写一个用于中序遍历的递归生成器。
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
?至少为什么在2
之前不会产生1
?如何修复它?
如果有帮助的话,我正在使用Babel转译代码。
babel --optional runtime test.js | node