Java: preorderEnumeration в TreeModel, как получить индекс глубины и родственный индекс?
for (Enumeration e = root.preorderEnumeration(); e.hasMoreElements() && theNode == null;) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
}
Для примера выше, как вы можете узнать, насколько глубоко вы находитесь в ветке дерева? Если вы перебираете братьев и сестер, как вы получаете его индекс?
1 ответ
Решение
Вы можете получить глубину, посчитав количество повторяющихся родителей getParent()
от node
пока результат null
,
Ты можешь получить node
Индекс благодаря node.getIndex(node.getParent())
,
Если вам нужна информация обо всех узлах, через которые вы проходите, я рекомендую вам для эффективности написать собственный код обхода, вдохновленный DefaultMutableTreeNode.getNextNode()
или же DefaultMutableTreeNode.PreorderEnumeration
внутренний класс. В этом более позднем случае сгенерированный стек должен содержать структуру { node, treeDepth, siblingIndex }