【发布时间】:2010-11-19 07:18:54
【问题描述】:
假设我有一棵二叉树,其节点定义如下。
struct node
{
int key1 ;
int key2 ;
}
二叉搜索树是在key1的基础上创建的。现在可以根据 O(1) 空间中的 key2 重新排列二叉搜索树。虽然我可以使用指向节点的指针数组在变量空间中执行此操作。
我需要这个的实际问题是“计算文件中唯一单词的出现次数并以频率降序显示结果”。 这里,一个 BST 节点是
{
char *word;
int freq ;
}
BST 首先是根据单词的字母顺序创建的,最后我想要它基于频率。
我在选择数据结构(即 BST)时错了吗?
【问题讨论】:
-
您不能按频率对 BST 进行排序,因为每个频率必须是唯一的。在您的情况下,情况并非如此。
-
Nick D:如果你看一下常见的 BST 实现,它通常被定义为“左孩子是 =”。值不必是唯一的。对于地图,是的,键必须是唯一的,但我不相信提问者真的在“将键映射到值”意义上使用键。如果我错了,那么是的,你可能是对的,他沉没了。 :(
-
阿戈尔,我觉得你错了。在 BST 中,我们无法获得多个结果。如果我们找到一个节点,我们就会停止。我们不检查孩子。
-
仅当您正在寻找单个值时。如果你正在按顺序走二叉树,那么你不要停下来,这样就可以了。
标签: algorithm binary-tree