【发布时间】:2016-06-28 13:14:43
【问题描述】:
我有一段简单的代码可以读取一组值。在用户输入时,比较 2 个值并将其设置为二进制堆。该方法在此处描述:
彼得将每个要求写在一张纸上,然后将它们堆积起来。在一个 第二步,他从 堆放在白板上。然后他又拿了一个 需求(需求7)从堆和小组讨论 哪个要求(要求 5 或 7)更重要。最后他们 同意要求 7 不如要求 5 重要。 Peter 把要求 7 放在要求 5 的左下角。然后他拿 另一个要求(要求 4),小组再次比较 与要求 5. 在得出结论之后,它也更少 比要求 5 重要,他们将其与要求 7 进行比较。他们 同意它比要求 7 更重要。彼得提出 要求 4 在要求 7 的右下角。小组重复 此程序适用于对桩的所有要求。最后,他们有 在白板上创建了所有要求的 BST。最后,彼得 按优先顺序创建所有需求的列表。为此他 开始记下需求最右边的数量 BST(要求 6)。他继续最接近它的要求 (要求 8),然后是最接近此的下一个(要求 10), 等等。所有需求的最终优先顺序是 (从高到低)6、8、10、9、3、5、4、7、2、1。 现在可以使用优先需求来选择需求 在下一个版本中实现。
tets()
function tets() {
var tasks = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"];
//root
var root = [tasks[0]];
function prio(q, step) {
//compare with step[0], now I just say 'random' more or less important for this demo;
var res = Math.random() > .5;
if (res) {
if (!step[2]) {
step[2] = [q];
} else {
prio(q, step[2])
}
} else {
if (!step[1]) {
step[1] = [q]
} else {
prio(q, step[1])
}
}
}
for (var i = 1; i < tasks.length; i++) {
prio(tasks[i], root)
}
console.log(root)
}
<pre id="result"> </pre>
如您所见,数组的构建就像图像中的二叉树。每个元素都像 3 的数组一样构建:[0] = 名称,1 是左侧的节点,2 是右侧的节点。
主要问题是:
我怎样才能让 javascript 遍历这棵树并将最右边的元素作为最高优先级,将最左边的元素作为最低优先级?
【问题讨论】:
-
这是一个简单的按顺序遍历你的树。
标签: javascript arrays algorithm