如何使用java绘制动态树?

时间:2014-08-23 11:57:33

标签: java graphics

我想要一些方法,我给它一棵树,​​它可以有不同的子号,不同的节点号等。 我希望它具有良好的图形形状,并将树打印在文件中。

1 个答案:

答案 0 :(得分:1)

为了调试目的,我做了几次这样做。然后我只需创建一个BufferedImage和几个方法来使用setColor绘制线条和节点。如果您的代码是为了提高性能,则应使用库或其他更高级的方法来绘制。

绘制树的技巧如下:

  • 有一个计算子树宽度的方法。实质上,这可能只是一个递归方法,它总结了根的子节点的宽度,但最小值为1(对于根本身而言)。除非仅用于调试,否则应该缓存每个节点的宽度,因此其复杂性从二次变为线性。
  • 执行欧几里德遍历,深度优先或广度优先并不重要,但绘制每个节点,同时为其兄弟节点留出足够的空间(使用父节点的子树的宽度)。例如,如果父节点的宽度为8,而您绘制的节点的宽度为5(意味着子树的大部分宽度是由于此节点),则节点应该在子树宽度的5/8内居中绘制(所以在5/16)。在那里绘制节点以及从父节点到节点的一条线。