簡體   English   中英

給定一個任意排序的樹,如何找到其任意元素集中的第一個和最后一個元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM