Java 如何在非二叉树中查找特定节点?
我有一个包含多个节点的树。每个节点都有一个父节点(根节点为null)、一个名称(name)和一个哈希表(children),该哈希表将子节点的名称映射到子节点对象 给定节点的字符串名称,我想创建一个方法,该方法在树中迭代以查找特定节点并返回它。如果节点不存在,则返回null 我认为递归方法最好。到目前为止,我有:Java 如何在非二叉树中查找特定节点?,java,tree,Java,Tree,我有一个包含多个节点的树。每个节点都有一个父节点(根节点为null)、一个名称(name)和一个哈希表(children),该哈希表将子节点的名称映射到子节点对象 给定节点的字符串名称,我想创建一个方法,该方法在树中迭代以查找特定节点并返回它。如果节点不存在,则返回null 我认为递归方法最好。到目前为止,我有: public Node findNode(Node n, String s) { if (n.name == s) { return n; } else {
public Node findNode(Node n, String s) {
if (n.name == s) {
return n;
} else {
for (Node child: n.children.values()) {
findNode(child, s);
}
}
}
我不确定把null语句放在哪里 如果孩子有它,那么就把它还给他。如果不是,则返回
null
public Node findNode(Node n, String s) {
if (n.name == s) {
return n;
} else {
for (Node child: n.children.values()) {
Node result = findNode(child, s);
if (result != null) {
return result;
}
}
}
return null;
}
下面是Java 11+版本,使用
可选搜索节点
公共可选搜索(节点、字符串指针){
if(node.getValue().equals(指针)){
返回可选的.of(节点);
}否则{
for(变量child:node.getChildren()){
var结果=搜索(子项、指针);
if(result.isPresent()){
返回结果;
}
}
}
返回可选的.empty();
}
这是一个很好的答案,我想指出,for中的“if(result!=null){…”对于避免返回null值而不是搜索的notnull值非常重要。谢谢!