我想在JavaScript中创建一个方法,该方法可以通过使用Tree结构生成包含非随机和非重复数字的数组。
假设名为permutation()
的方法,我只是简单地使用
permutation(3)
我将得到一个可以迭代的数组,每个数组都是
012 021 120 102 201 210
如果将数字3更改为5,它将生成一个数组
012345 012354 etc...
然后我发现我可以使用树形结构来构建这种数组,如下所示:
root: 0 1 2
↓ ↓ ↓ ↓ ↓ ↓
depth1: 1 2 0 2 1 0
↓ ↓ ↓ ↓ ↓ ↓
depth2: 2 1 1 0 0 1
然后我遍历所有节点以获得结果。
数字增加时一样
root: 0 1 2 3 4 5 6....
↓ ↓ ↓ ↓ ↓ ↓
depth1: 1 2 3 4 5 6
etc....
问题是我不知道如何用JavaScript构造这样的树?我不知道这些问题叫什么名字。
答案 0 :(得分:0)
您可以采用数组并为每个剩余项获取一个子树。
function createTree(array) {
return array.map((v, i, a) => array.length === 1
? [v]
: [v, createTree([...a.slice(0, i), ...a.slice(i + 1)])]
);
}
var result = createTree([0, 1, 2]);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }