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 }

Другие вопросы по тегам