java - 在二叉搜索树中按顺序搜索

标签 java

我使用 inorder 来显示存储在二叉搜索树中的搜索名称的结果,但是当我运行它的示例时,我有:员工名称“abc”和“ab”,我输入名称 ="abc",它显示了其中的 2 个。任何人都可以帮助我我的错:( ty

public void searchFull(String name) {
        EmployeeSLLNode p = root;
        n=0;
        if (p != null) {
            inorder(p.left);
            if(p.info.getFullname().equals(name)) {
                    n++;
             System.out.printf("%2s  %-5s   %-8s   %-6s   %-6s%n", n, p.info.getID(), p.info.getFullname(), p.info.getAge(), p.info.getGender());
            }
             inorder(p.right);
        }
    }

最佳答案

中序遍历相当于迭代一个TreeMapentrySet .

final Map<String, Employee> employees = new TreeMap<String, Employee>();
...
for (final Map.Entry<String, Employee> entry : employees.entrySet()) {
  /* iterating in-order */
}

TreeMap 仅使用二叉搜索树(特别是,根据 specification ,红黑树)。考虑使用它而不是推出自己的解决方案;-)


话虽这么说,如果你打算自己动手,也许试试这样的东西......

public EmployeeSSLnode search(final EmployeeSSLnode root, final String name) {
  EmployeeSSLnode left;
  return root == null
    ? null
    : (left = search(root.left, name)) == null
      ? root.info.getFullname().equals(name)
        ? root
        : search(root.right, name)
      : left;
}

关于java - 在二叉搜索树中按顺序搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023939/

相关文章:

java - 通过 SSL 调用 Web 服务时出错(java)

java - 在 html2image(java) 中使用 css

java - 对于不同类型的数据,我应该使用哪个 Map 类?

java - 圈复杂度和变体

java - Java中switch语句的用法

java - 如何在junit测试中继承自定义@EnableAutoConfiguration注释?

Java http 帖子 : values arent added

java - 规范路径和绝对路径有什么区别?

java - 调试由 docker 容器内的脚本调用的 java 应用程序

java - Android - 使用 for 循环将 View 添加到数组