В этой статье я собираюсь написать программу, которая будет использовать генераторы javascript для обхода двоичного дерева.
class Node { constructor(value) { this.data = value; } } class BinaryTree { constructor() { this.root = new Node(5); this.root.left = new Node(10); this.root.right = new Node(20); } * start() { const root = this.root; const stack = [root]; while (stack.length > 0) { const node = stack.shift(); yield node.data; if (node.left) { stack.push(node.left) } if (node.right) { stack.push(node.right) } } } } const tree = new BinaryTree(); const iterator = tree.start(); let g = iterator.next(); while (!g.done) { console.log("value", g.value); g = iterator.next(); }
Как насчет создания итераторов без использования генератора javascript по умолчанию. В этом случае вы можете поместить элемент yield в другой стек, который будет использоваться для итерации.