我有一棵树,由TreeItems构成。每个TreeItem都有以下方法:
TreeItem TreeItem::getParent()
TreeItem[] TreeItem::getChildren()
int TreeItem::indexOf(TreeItem childItem)
我也有一组来自这棵树的无序TreeItems。我想快速找到这个集合的第一个元素和最后一个元素。
任何聪明的想法?
答案 0 :(得分:0)
选择集合中的一个树项目(我假设给定集合是子树),然后首先找到该集合的父项:
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();
}