for (Enumeration e = root.preorderEnumeration(); e.hasMoreElements() && theNode == null;) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
}
对于上面的那个例子,你怎么知道你在树枝里有多深?如果你正在迭代兄弟姐妹,你如何获得它的索引?
getParent()
您可以通过计算从node
直到结果为的父级迭代的数量来获得深度null
。
你可以得到node
的索引感谢node.getIndex(node.getParent())
。
如果您需要遍历每个节点的这两种信息,我建议您编写自己的遍历器代码以提高效率,无论是从类DefaultMutableTreeNode.getNextNode()
还是DefaultMutableTreeNode.PreorderEnumeration
内部类中获得灵感。在后一种情况下,生成的堆栈应该包含一个结构{ node, treeDepth, siblingIndex }