java - 在Java中搜索二叉树的所有节点

标签 java search binary-tree

我正在尝试编写一种方法来搜索二叉树的所有节点以获取传递的值并在找到时返回该节点。我似乎无法获得正确的逻辑来搜索树的两侧。这是我目前所拥有的。

private Node locate(String p, Node famTree)
{  
    if (root == null)//If tree empty return null;
        return null;
    if (famTree.value.equals(p)) //If leaf contains the passed parent value the boolean becomes true.
        return famTree;
    if (famTree.left != null)
        return locate(p,famTree.left);
    else
        return locate(p,famTree.right);

}

最佳答案

当没有左子树时,你只搜索右子树。当在左子树中找不到字符串时,您还想搜索它。应该这样做:

private Node locate(String p, Node famTree)
{
    Node result = null;
    if (famTree == null)
        return null;
    if (famTree.value.equals(p))
        return famTree;
    if (famTree.left != null)
        result = locate(p,famTree.left);
    if (result == null)
        result = locate(p,famTree.right);
    return result;

}

关于java - 在Java中搜索二叉树的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15941204/

相关文章:

java - 在android中执行管道命令

java - 如何将匿名类重新集成到 ECD 反编译器生成的 Java 代码中?

java - 在 Java 中,如何从资源构造文件?

performance - 如何提高电子商务网站的搜索性能?

java - try-finally block 继续 for 循环

php - 如何在sphinxapi中通过sql_attr_uint过滤结果?

php - 如何提高网站标题搜索结果

algorithm - 平衡二叉树中两个节点之间的最短路径如何受到路径 'weight' 的影响?

algorithm - 完整的二叉树定义

c++ - BinaryTree 不会分配新创建的节点