我正在尝试为顺序遍历编写递归生成器.
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
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼发电机:
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
}
Run Code Online (Sandbox Code Playgroud)
为什么发电机只能屈服2?为什么它至少没有产生1之前2? …