我正在搜索以下任务的解决方案:
我有一个包含大量数据的平面列表。
现在我想将此列表转换为具有以下规则的树:
我认为它就像一个k-ary(k是每个级别的节点限制)树,但也许这个东西有另一个名字。
此任务的背景是径向树中列表的可视化问题。当有太多时,在径向树中显示第一层上的所有叶子看起来不太好。因此,我认为最好在达到级别限制时插入一些节点来对数据进行分组。生成的树应该能够以更好的视觉方式显示叶子。
是否有算法或更好的实现此任务?
感谢任何指针或信息。
答案 0 :(得分:4)
我们说N
,列表中的项目数为4,K=2
。所以这将是一棵二叉树。
第1步:创建2个节点
P1 P2
1 2 3 4
步骤2:在叶节点的2个节点和K
之间创建链接
P1 P2
/ \ / \
1 2 3 4
第3步:创建另一个节点
P5
P1 P2
/ \ / \
1 2 3 4
步骤4:在该节点与您创建的2个先前节点之间创建链接
P5
/ \
P1 P2
/ \ / \
1 2 3 4
看模式?对于任何此类N
和K
,您可以非常轻松地迭代执行此操作。你必须担心N
不是K
的完美力量的情况。基本上每个节点的子节点数最多为ceil(N / K)。