在二叉树中查找节点

时间:2016-06-21 12:16:35

标签: java binary-tree

我对应该在二叉树中找到包含给定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。那是为什么?

2 个答案:

答案 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