我对应该在二叉树中找到包含给定value
的节点的方法有疑问。下面提供的方法不起作用,问题是为什么。
public Node search(Node node, int value) {
if(node.value == value) return node;
if(node.left != null) search(node.left, value);
if(node.right != null) search(node.right, value);
return null;
}
问题是,当树中存在一个给定null
的节点时,此方法有时会返回value
。那是为什么?
答案 0 :(得分:5)
您不应该忽略递归调用返回的值,并且您的方法不应该使用root
,而是传递node
:
public Node search(Node node, int value) {
if(node.value == value) return node;
Node found = null;
if(node.left != null)
found = search(node.left, value);
if(found == null && node.right != null)
found = search(node.right, value);
return found;
}
答案 1 :(得分:0)
与Eran一样,您通过'use strict';
angular.module('mainApp').controller('myCtrl1',function($scope,$http){
});
语句进行搜索的调用并未返回节点,因为您的if
函数应该是这样。当前代码唯一可行的情况是第一个节点search
是否满足n
。