我正在尝试在二叉树中搜索一个节点,如果它在那里则返回,否则返回null . 顺便说一句,节点类有一个方法名称()返回一个带有它的名字的字符串...到目前为止我所拥有的是:
private Node search(String name, Node node){
if(node != null){
if(node.name().equals(name)){
return node;
}
else{
search(name, node.left);
search(name, node.right);
}
}
return null;
}
它是否正确??
10 回答
如果结果不为null,则需要确保对搜索的递归调用返回 .
像这样的东西应该工作......
由于语言对于这个问题并不重要,所以这里是C#中预先遍历遍历的内容:
如果在node.left或node.right中找到它,你应该返回一些东西,所以else块应该是这样的:
你不会对递归调用的结果做任何事情
这可能更好:
实际上,尽量避免递归 . 如果您有大树结构,您将收到堆栈溢出错误 . 而不是这个你可以使用一个列表: