每个节点有多个子节点的树的搜索方法

时间:2018-02-22 18:30:39

标签: java algorithm recursion data-structures tree

我创建了以下方法来搜索未排序的树中的某个ParentReference Id,并且每个节点可以包含任意数量的子节点。如果给定的parentRef与Node的parentRef匹配,则应该返回Node。

public static <T>Node<T> search(Node<T> node, int parentRef) {
    if(node.getParentRef() == parentRef){
        return node;
    }
    if(node.getChildren()!= null){
        for(int i = 0; i < node.getChildren().size(); i++){
            if(node.getChildren().get(i).parentRef == parentRef){
                return node;
            }
            else {
                search(node.getChildren().get(i), parentRef);
            }
        }
    }
    return null;
}

然而,它不起作用并始终返回null但我不知道原因。谁能解释我做错了什么?

1 个答案:

答案 0 :(得分:2)

else分支中,您以递归方式调用search,但不返回其值,因此会丢失。您应该检查它是否不是null,如果是,请将其返回:

else {
    Node<T> result = search(node.getChildren().get(i), parentRef);
    if (result != null) {
        return result;
    }
}