![]() |
1
4
我想试试沃克算法。 Here's an academic paper NodeLinkTreeLayout 在里面 Prefuse . Prefuse是开源的,所以只要您遵守许可条款,就不应该有任何问题来调整代码以适应您的情况。 |
![]() |
2
4
我建议按线条画这棵树。您可以通过使用某种移动的“绘图光标”来实现这一点。
你可以存储一个属性
然后,你在中间画根“在第一行”,也就是说,你只需要根的
然后,在图像上生成一个网格,使每个网格线分别对应于一条线。从左到右一步,网格线的每个交点都可以包含一个节点,每个节点都有足够的空间。
然后,遍历childs,在迭代的同时,累积childs的
为了使节点处于良好的顺序,可以考虑广度优先搜索。 我希望我的解释是清楚的,但我想如果我画一点图画会更好。
这是我们的树(
所以,你计算叶子的
然后,自下而上
所以,你从根开始(
第一个孩子
此过程确保没有重叠的节点(如果网格线彼此之间的距离足够远),但它可能会生成相当大的树形图,从而可以更有效地利用空间。 为了检测未使用的空间,可以在上述过程之后扫描线,查看是否存在未使用的网格线交点,然后可能重新排列一些节点以填充空间。 |
![]() |
4
2
Graphviz和mfgraph功能强大,但它们适用于一般的图,可能对树有过多的杀伤力。 Graphic Javascript Tree with Layout 后者很旧,但它使用HTML画布和javascript,并且它解释了代码,因此代码和方法都应该是可移植的。 |
![]() |
5
0
根据数据的性质 TreeMap |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |