[英]Given an arbitrarily ordered tree, how do I find the first and last element of an arbitrary set of its elements?
我有一棵樹,由TreeItems構造。 每個TreeItem具有以下方法:
TreeItem TreeItem::getParent()
TreeItem[] TreeItem::getChildren()
int TreeItem::indexOf(TreeItem childItem)
我也有這棵樹上無序的TreeItems集。 我想快速找到該集合的第一個元素和最后一個元素。
有什么聰明的主意嗎?
選擇您的集合中的樹項之一(我假設給定的集合是子樹),然后首先找到該集合的父項:
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.