【问题标题】:Sort alphabet letters using a Binary tree使用二叉树对字母进行排序
【发布时间】:2015-11-18 13:23:42
【问题描述】:

我遇到了一个面试问题,其中指出:您如何按排序顺序表示字母 ABCDEFG二叉树表示?

真的把我难住了。如果我们将G 作为树的根,那么左子树将是E,右子树将是F,因此右子树“大于”左子树。那么对于节点 E,它的左孩子是 A,右孩子 BF 的左孩子是 C,它的右孩子是 D

这是正确的还是其他人有不同的答案?

【问题讨论】:

  • 您可能应该查看“排序顺序”的含义。提示:如果 G 是根,它不会有右孩子。

标签: algorithm data-structures binary-tree


【解决方案1】:

您对问题的回答不正确。为什么? 当您将 G 作为根时,所有其他字母或键必须在 G 的左侧。这意味着 G 不会有右子节点,因为形成右子树的所有节点都必须具有比参考键值更大的键,在这种情况,G。

【讨论】:

    【解决方案2】:

    如果您使用从 A 到 G 的字母作为完整集,则排序二叉树将如下所示:

          D
      B       F  
    A   C   E   G
    

    【讨论】:

    • 如果你研究构建一个完整的二叉树(或二叉堆),正如@Yu 所说,所有的子树都是满的。这意味着需要 log(n) 时间来搜索您要查找的内容(其中 n = 节点数)。当您构建树时,将节点从 A 带到 G,D 将出现树的根,因为这允许所有其他节点形成完整的二叉子树。
    【解决方案3】:

    您描述的二叉树是Binary heap,通常用于实现优先级队列。

    改为使用Binary search tree,这样可以按排序顺序保存它们的键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多