我想用BST制作字典,但我没有任何想法如何将它们存储在树中
struct node
{
char word[50];
char meaning[256];
struct node *left, *right;
};
我是这样开始的,但我不知道左边放哪些字,右边哪个字......
答案 0 :(得分:3)
您应该使用类似suffix tree的内容,而不是二叉树。 BST实际上更多的是“更大/更少”的关系,这很难用词来映射。对于后缀树,您的节点是字符,分支最终会导致叶子代表实际的单词。
答案 1 :(得分:1)
通常,词典上比当前节点中的单词小的单词会向左移动,其余单词则向右移动。使用<
对C ++的std::string
,strcmp
进行C风格字符串(NUL终止的char
数组)的比较。
答案 2 :(得分:1)
要放置哪些单词以及放置哪个单词仍然遵循BST的基本规则:保证给定根左侧的所有节点都小于该根的值,并且保证右侧的所有节点给定的root保证大于或等于root的值。
将相同的原则应用于您的词典。我不知道你是在使用C还是C ++,但是如果你使用的是C ++,我建议你创建一个“Word”结构,并重载它的相等运算符。然后在“节点”结构中,只有一个Word,一个左节点和一个右节点。
但是,BST不是字典数据结构的最佳选择。我会研究不同类型的地图和散列。