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将出现树的根,因为这允许所有其他节点形成完整的二叉子树。