Algorithm 使用二叉树对字母进行排序

Algorithm 使用二叉树对字母进行排序,algorithm,data-structures,binary-tree,Algorithm,Data Structures,Binary Tree,我遇到了一个采访问题,问题是:您如何使用二叉树表示法按排序顺序表示字母A、B、C、D、E、F和G 这真让我难堪。如果我们将G作为树的根,那么左子树将E,右子树将F,因此右子树“大于”左子树。然后对于节点E,其左子节点将是A,右子节点B和F的左子节点将是C,其右子节点将是D 这是正确的还是其他人有不同的答案?您描述的二叉树是一个,通常用于实现优先级队列 相反,请使用,这将使它们的键保持排序顺序。您描述的二叉树是一个,通常用于实现优先级队列 相反,请使用,这样可以使它们的键保持排序顺序。如果使用从A

我遇到了一个采访问题,问题是:您如何使用二叉树表示法按排序顺序表示字母
A
B
C
D
E
F
G

这真让我难堪。如果我们将
G
作为树的根,那么左子树将
E
,右子树将
F
,因此右子树“大于”左子树。然后对于节点E,其左子节点将是A,右子节点
B
F
的左子节点将是
C
,其右子节点将是
D


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

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


相反,请使用,这将使它们的键保持排序顺序。

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


相反,请使用,这样可以使它们的键保持排序顺序。

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

      D
  B       F  
A   C   E   G

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

      D
  B       F  
A   C   E   G

你对这个问题的回答不正确。为什么?
当您以G为根时,所有其他字母或键必须位于G的左侧。这意味着G将不会有右子级,因为构成右子树的所有节点的键必须大于参考键值,在这种情况下,G。

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

您可能应该查找“排序顺序”的含义。提示:如果G是根,它就不会有正确的子级。您可能应该查找“排序顺序”的含义。提示:如果G是根,它就不会有合适的子级。如果你像@Yu所说的那样研究构建一个完整的二叉树(或二叉堆),那么所有的子树都是满的。这意味着需要花费log(n)时间来搜索您要查找的内容(其中n=节点数)。在构建树时,将节点从A到G,D将出现树的根,因为这允许所有其他节点形成完整的二叉子树。如果您研究构建一个完整的二叉树(或二叉堆),如@Yu所述,所有的子树都已满。这意味着需要花费log(n)时间来搜索您要查找的内容(其中n=节点数)。在构建树时,将节点从A到G,D将出现树的根,因为这允许所有其他节点形成完整的二叉子树。