【问题标题】:Sorting a binary search tree using a different key?使用不同的键对二叉搜索树进行排序?
【发布时间】:2020-04-28 03:07:50
【问题描述】:

我在 Java 中有一个二叉搜索树,它在每个节点上保存一个对象,这些对象是根据它们的 name 属性添加的。遍历时根据名称按字母顺序列出对象,这很好。虽然,我需要一个方法来根据对象的年龄属性按降序列出对象。所以基本上我需要暂时重新排序树只是为了按顺序打印内容。

到目前为止,我想出的是遍历树并将每个节点添加到一个临时数组中,当这完成后,该数组将通过合并排序。这可行,但它似乎相对低效并提高了复杂性,这是我必须创建的第一棵二叉树,所以我的方法可能是不必要的。

我想我的问题是,有没有更有效的方法来处理或思考这个问题来重新排序树?由于树将是完全随机的(就年龄而言),我想不出另一种方式。任何帮助将不胜感激。

【问题讨论】:

    标签: java binary-search-tree traversal


    【解决方案1】:

    您似乎可以创建另一棵基于年龄排序的树,并且每当您将项目添加到第一棵树时,您也可以将相同的项目添加到第二棵树。这给了你 O(logN) 用于插入新树和 O(N) 来遍历树并打印出项目 vs O(NlogN) 这是合并排序的运行时。

    【讨论】:

      猜你喜欢
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      相关资源
      最近更新 更多