2012-02-11 5 views
0

私はTreeItemsで構築されたツリーを持っています。各TreeItemには、次のメソッドがあります。任意の順序ツリーが与えられていれば、その要素の任意の集合の最初と最後の要素はどうやって見つけられますか?

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

また、このツリーから順序付けられていないTreeItemがあります。私はこのセットの最初の要素と最後の要素をすばやく見つけたいと思います。

賢いアイデアはありますか?

答えて

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(); 
} 
関連する問題