【发布时间】:2020-01-13 06:14:34
【问题描述】:
我用 JavaScript 编写了允许生成任何二叉树的代码(每个父节点都有 2 个子节点)。
用户可以通过名为“levels”的变量来指定他想要的树的层数。
代码:
function TreeNode(name, type, properties, children) {
this.name = name;
this.type = type;
this.properties = properties;
this.children = children;
}
var levels = 3;
prop = properties("Object_1");
var tree = new TreeNode("Object_1", "level_1", prop, []);
levels--;
var tempIndex = 2;
function generateArbitraryLevels(parent, levelsRemaining) {
// last level
if (levelsRemaining === 0) return;
var currentLevel = parseInt(parent.type.split('_')[1]) + 1;
var prop1 = properties("Object_" + tempIndex);
parent.children.push(
new TreeNode("Object_" + tempIndex++, "level_" + currentLevel, prop1, [])
);
generateArbitraryLevels(parent.children[0], levelsRemaining - 1);
var prop2 = properties("Object_" + tempIndex);
parent.children.push(
new TreeNode("Object_" + tempIndex++, "level_" + currentLevel, prop2, [])
);
generateArbitraryLevels(parent.children[1], levelsRemaining - 1);
}
generateArbitraryLevels(tree, levels);
tree = JSON.stringify([tree]);
树中的每个对象都有:
-name - 架构中的第一个字段,它应该包含对象的 ID,
-type - 第二个字段,它有关于对象级别的信息,
-属性 - 没关系,
-儿童。
所以索引应该从左到右。 我怎样才能做到这一点?也许循环会更好地达到这个目的?
【问题讨论】:
标签: javascript json recursion binary-tree