閉じているTreeの特定のアイテムを選択状態にする

TreeのdataProviderにデータを設定した直後の状態、つまり、ルートのノードだけが表示されていてルートの子供はみな閉じている状態になっている。この状態で、特定の条件のアイテムを選択状態にする。
ルートから順番にアイテムを開いていき、そのアイテムの子アイテムに該当するidのノードが存在するか調べて、存在しなければその子アイテムを開いて...というように再帰的に検索を行い、もし探しているアイテムが存在すれば、そのアイテムをTreeのselectedItemに指定する。

public function foo(id:Number):void{
    var items:XMLList = ... //ここにXMLリストを設定する。
    for each(var item:XML in items){
        tree.expandItem(item, true);
    }
    findAndSelect(items, id);
}

public function findAndSelect(items:XMLList, id:Number):Boolean{
    for each(var item:XML in items){
        tree.expandItem(item, true);
        var findItems:XMLList = item.item.(@id == id);
        if(findItems.length() > 0){
            tree.expandItem(findItems[0], true);
            tree.selectedItem = findItems[0];
            return true;
        }else{
            var notFoundItems:XMLList = item.item;
            if(findAndSelect(item.item, true)){
                return true;
            }
        }
    }
    return false;
}