在非二叉树中搜索一个或多个节点,并从根到搜索到的节点获取结果

时间:2018-04-09 07:12:28

标签: java search

尝试搜索树中的节点/节点并获取其后代。

我的班级

public class TreeNodeDTO {

/** The id. */
private String id;

/** The title. */
private String title;

/** The children. */
private List<TreeNodeDTO> children;

//setters and getters
}

我可以通过以下算法

找到后代
  public ArrayList< TreeNodeDTO > search( String search ) {
    ArrayList< TreeNodeDTO > list = new ArrayList< TreeNodeDTO >(), temp;
    if ( !this.title.equals( "Root" ) ) {
        list.add( this );
    }
    if ( getTitle().equals( search ) ) {
        return list;
    }
    if ( children != null )
        for ( TreeNodeDTO n : children ) {
            temp = n.search( search );
            if ( temp != null ) {
                list.addAll( temp );
                return list;
            }
        }
    return new ArrayList<>();
  }

但它返回从父到子的所有路径,例如,如果此类填充了以下树结构:

Data
  |
  Workflows
   |
   Elements
    |
    Export

当我搜索&#34;导出&#34;

它返回

Data
  |
  Workflows
   |
   Elements
    |
    Export

Workflows
   |
   Elements
    |
    Export

Elements
 |
 Export

虽然我只需要以下结果

Data
  |
  Workflows
   |
   Elements
    |
    Export

0 个答案:

没有答案