DefaultMutableTreeNodes에 의해 형성된 JTree가 있습니다. 각 노드에는 일부 데이터가 포함 된 UserObject가 있습니다. 이 데이터 중 하나는 내가 "크기"라고 부르는 것입니다. 나는 각 노드를 자식의 "크기"의 합계로 업데이트하는 트리를 traveste하고 싶습니다.자식 노드에서 얻은 정보로 부모 노드를 업데이트하는 트리를 탐색하십시오.
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);
}
}
위 코드를 시도했지만 2 레벨까지만 노드에서 작동합니다.
무엇이 누락 되었습니까?
TIA.
"자녀의 크기의 합"은 무엇을 의미합니까? 부모가 직접 자식의 크기 만 또는 각 하위 트리의 크기와 그 자식을 루트로 합한 크기를 가질 것입니까? – AnxGotta
좋은 지적. 각 "부모"는 직계 자녀의 크기의 합계를가집니다. 여기에 어떤 유형의 재귀가 필요할 것으로 생각되지만 아직 기능적 코드를 만들 수는 없습니다. –