我创建了以下方法来搜索未排序的树中的某个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
但我不知道原因。谁能解释我做错了什么?
答案 0 :(得分:2)
在else
分支中,您以递归方式调用search
,但不返回其值,因此会丢失。您应该检查它是否不是null
,如果是,请将其返回:
else {
Node<T> result = search(node.getChildren().get(i), parentRef);
if (result != null) {
return result;
}
}