Java: preorderEnumeration в TreeModel, как получить индекс глубины и родственный индекс? - PullRequest
0 голосов
/ 05 марта 2012
    for (Enumeration e = root.preorderEnumeration(); e.hasMoreElements() && theNode == null;) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();

    }

Для примера выше, как вы можете узнать, насколько глубоко вы находитесь в ветке дерева? Если вы перебираете братьев и сестер, как вы получаете его индекс?

1 Ответ

1 голос
/ 05 марта 2012

Вы можете получить глубину, посчитав количество родителей, повторяющихся на getParent() от node до результата null.

Вы можете получить индекс node благодаря node.getIndex(node.getParent()).

Если вам нужна информация обо всех узлах, через которые вы проходите, я рекомендую вам по эффективности написать собственный код обхода, основанный на внутреннем классе DefaultMutableTreeNode.getNextNode() или DefaultMutableTreeNode.PreorderEnumeration. В этом более позднем случае сгенерированный стек должен содержать структуру { node, treeDepth, siblingIndex }

...