Учитывая произвольно упорядоченное дерево, как мне найти первый и последний элемент произвольного множества его элементов? - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть дерево, построенное из TreeItems. Каждый TreeItem имеет следующие методы:

TreeItem   TreeItem::getParent()
TreeItem[] TreeItem::getChildren()
int        TreeItem::indexOf(TreeItem childItem)

У меня также есть неупорядоченный набор TreeItems из этого дерева. Я хочу быстро найти первый элемент и последний элемент этого набора.

Какие-нибудь умные идеи?

1 Ответ

0 голосов
/ 11 февраля 2012

Выберите один из элементов дерева в вашем наборе (я предполагаю, что данный набор является поддеревом), затем сначала найдите родителя этого набора:

while (element.getParent()!=null)
  element = element.getParent();
parent = element;

Теперь у вас есть родительский элемент, и вам просто нужнорекурсивно повторить его дочерние элементы:

TreeItem TreeItem::getLastChild()
{
 children = getChildren();
 if (children == null)
   return parent;

 int maxIndex = 0;

   // find child with maximum index
   .....

  return foundedChild.getLastChild();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...