【发布时间】:2021-10-04 06:02:34
【问题描述】:
我正在尝试解决这个 leetcode 问题 https://leetcode.com/problems/binary-search-tree-iterator/,它要求您进行迭代以遍历 BST,我认为生成器非常适合它。
这是我的尝试
class BSTIterator {
constructor(root) {
this.root = root
this._gen = this._getGen(root)
}
*_getGen(node) {
if(node) {
yield* this._getGen(node.left)
yield node.val
yield* this._genGen(node.right)
}
}
next() {
return this._gen.next().value
}
hasNext() {
return this._gen.next().done
}
}
但我收到一个错误提示
TypeError: yield* is not a terable
有人可以帮助我了解我做错了什么以及使用生成器解决此问题的正确方法是什么?
【问题讨论】:
-
切向相关 - 您的
hasNext无法正常工作,因为它正在消耗下一个值。因此,hasNext()可能会报告true,但它消耗了最后一个值,因此在这种情况下,next不会返回任何内容。
标签: javascript ecmascript-6 binary-search-tree es6-generator