diff --git a/src/core/structure/tree.js b/src/core/structure/tree.js index 32e7665b4..359af5cab 100644 --- a/src/core/structure/tree.js +++ b/src/core/structure/tree.js @@ -30,20 +30,23 @@ initTree: function (nodes) { var self = this; this.clear(); - var queue = []; + var queue = new Set(); + BI.each(nodes, function (i, node) { var n = new BI.Node(node); n.set("data", node); self.addNode(n); - queue.push(n); + queue.add(n); }); - while (!BI.isEmpty(queue)) { - var parent = queue.shift(); + while (queue.size > 0) { + var [parent] = queue; + queue.delete(parent); + var node = parent.get("data"); BI.each(node.children, function (i, child) { var n = new BI.Node(child); n.set("data", child); - queue.push(n); + queue.add(n); self.addNode(parent, n); }); }