Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从树中的聚集对象逐步绘制树状图的算法_Java_Recursion_Tree_Cluster Analysis_Dendrogram - Fatal编程技术网

Java 从树中的聚集对象逐步绘制树状图的算法

Java 从树中的聚集对象逐步绘制树状图的算法,java,recursion,tree,cluster-analysis,dendrogram,Java,Recursion,Tree,Cluster Analysis,Dendrogram,我想从我已经聚集并保存在leavetree中的对象中绘制一个树状图。Java中的集群对象可以用这些图片表示。每个叶子包含一个对象,每个节点包含其子节点之间的距离 现在,我想逐步绘制一个树状图,首先绘制对象1和2,然后将对象3添加到这些树状图中。然后5和6一起等等。。直到一切都连接起来的尽头。我已经有了所有的工具可以很容易地画出来,但是我找不到一个有效的方法来正确地在树上行走 这应该是示例编辑中到目前为止的结果:有一个错误,从5到6的距离现在看起来比从3到1&2的距离小,但在我的示例中不是这样的

我想从我已经聚集并保存在leavetree中的对象中绘制一个树状图。Java中的集群对象可以用这些图片表示。每个叶子包含一个对象,每个节点包含其子节点之间的距离

现在,我想逐步绘制一个树状图,首先绘制对象1和2,然后将对象3添加到这些树状图中。然后5和6一起等等。。直到一切都连接起来的尽头。我已经有了所有的工具可以很容易地画出来,但是我找不到一个有效的方法来正确地在树上行走

这应该是示例编辑中到目前为止的结果:有一个错误,从5到6的距离现在看起来比从3到1&2的距离小,但在我的示例中不是这样的!:


有人对这种递归算法有什么建议吗?

您首先渲染深度-您可能会发现需要跟踪深度以使布局正常工作-还请注意,您还必须绘制非终端注释*在3之前绘制

基本上

draw(node)
{
   if(hasleft) draw(left)
   if(hasright) draw(right)
   drawme()
}

这是假设一棵二叉树,但这就是你所画的,而且这会因为布局问题而变得更加复杂——你真的想考虑从上到下绘制宽度,这使得布局对于轮廓部分来说不那么痛苦。我认为从底部开始比较容易,我知道我必须从添加图片中的标签旁边开始。这棵树不完全是一棵二叉搜索树,也就是说,这两棵树可以再次聚集到一棵树上,那么它就不再是我想的了?啊,更改布局将使事情变得更容易,但并不完美-但是如果您不打算标记终端节点以外的任何东西,那么这相当简单-但是第一个布局要好得多-第二个图表不是二叉树是正确的,因为根元素有4个子元素-但是请注意,对于任何父行,为了计算父对象的垂直偏移量,您需要知道子对象的总数。我不确定您的意思是否是这样,但第一张图片不是布局,它只是一个用Java绘制的树类的可视化表示,其中包含一些数据,以明确我的集群对象是什么样的。