这里有 100 个数字,每行 10 个。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
我想将这些数字排列成一棵树,其中每个节点最多有 5 个元素。是这样的:
[ ]
[ ],[ ],[ ],[ ]
[ ],[ ],[ ],[ ],[ ] [ ],[ ],[ ],[ ],[ ] [ ],[ ],[ ],[ ],[ ] [ ],[ ],[ ],[ ],[ ]
1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6
2 7 2 7 2 7 2 7 2 7 2 7 2 7 2 7 2 7 2 7
3 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8
4 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9
5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0
所以我们在树中有 4 个“层”:
在第 1 层(顶层),我们有 4 个孩子(4 个数字数组数组)。
在第 2 层,我们有 5 个孩子(5 个数字数组)。
在第 3 层,我们有 5 个孩子(5 个数字)。
第 4 层是数字。
如何编写 JavaScript 算法来生成这样的树?规则是,每个块最多 5 个。或者更一般地说,n
每个块的最大值。
这有点类似于数组分块算法,但同时看起来更复杂。
我已经为此困惑了几天,但这将有助于解决这个问题:如何将数组划分为大小为 2 的幂的桶树?
基本上,随着数组变长,嵌套会越来越大。
另一个更简单的例子是 13 项数组:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
1, 2, 3]
哪个被转换成这棵树:
[ ]
[ ],[ ],[ ]
1 6 1
2 7 2
3 8 3
4 9
5 0
qq_遁去的一_1
相关分类