我有一个由DefaultMutableTreeNodes组成的JTree。每个节点都有一个包含一些数据的UserObject。其中一个数据是我称之为“大小”的东西。我想通过其子节点“大小”的总和来遍历树更新每个节点。使用从孩子获得的信息遍历树更新父节点
public void traverse(DefaultMutableTreeNode root)
{
Field f;
int offset = 0;
int size = 0;
// Just changing enumeration kind here
@SuppressWarnings("unchecked")
Enumeration<DefaultMutableTreeNode> en = root.postorderEnumeration();
while (en.hasMoreElements())
{
DefaultMutableTreeNode node = en.nextElement();
f = (Field)node.getUserObject();
if (node.isLeaf())
{
size += f.getSize();
}
else
{
f.setSize(size);
size = 0;
}
System.out.println((node.isLeaf() ? " - " : "+ ") + " -----> "+f);
}
}
我试过上面的代码,但它只能用于节点,直到第二级。
我错过了什么?
TIA。
你是什么意思“它的孩子的大小的总和”?你的意思是,父母只有其直系子女的大小的总和,或者每个子树与子女之间的大小总和为根? – AnxGotta
好点。每个“父母”都有你的直系孩子的总和。我想我会在这里需要某种类型的递归,但是我还没有做出功能性代码。 –