gpt4 book ai didi

java - 手动遍历绘制树

转载 作者:行者123 更新时间:2023-11-29 08:58:29 25 4
gpt4 key购买 nike

我正在尝试从节点列表中手动绘制分层树。每个节点都是一个对象,其信息包含在方法中,例如:

node.getParent()
node.getChildrenCount()

我遇到的问题是绘制树的金字塔结构(正确缩进子节点),根在中间顶部,子节点向下对称分布。

private void drawTree(Graphics2D graphics) {
int width = 110;
int height = 40;
int y = 10;
for (int i = 0, nodesSize = nodes.size(); i < nodesSize; i++) {
AttributedNode node = nodes.get(i);
Rectangle rectangle;
if (i == 1) { // draw root
rectangle = new Rectangle(getRootX(), y, width, height);
} else {
if (node.getChildCount() == 1) { // if one child draw beneath
rectangle = new Rectangle(getRootX(), y, width, height);
} else {
rectangle = new Rectangle(getRootX() + 40, y, width, height);
}
}
y += 50;
graphics.draw(rectangle);
addStringToRectangle(graphics, rectangle, node.getText());
}
}

我目前拥有的:http://img10.imageshack.us/img10/8822/rcsi.png
我想要实现的目标:http://img703.imageshack.us/img703/8416/1o05.png
任何帮助将不胜感激。

最佳答案

递归可能会为您的问题提供一个很好的解决方案。

public void drawTree(Node node, Graphics2D graphics) {
if(node != null){
//drawTree(node.leftChild);
//drawTree(node.rightChild);
//draw this node.
}
}

我使用了一些伪代码,但如果您开发这个想法,它可能会有所帮助。我建议考虑将这个简单的想法画在纸上干运行。阅读预购、订购和售后:)

关于java - 手动遍历绘制树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com