二进制搜索树 - 制作字典

时间:2011-07-27 16:27:22

标签: c++ c binary-tree

我想用BST制作字典,但我没有任何想法如何将它们存储在树中

struct node
   {
    char word[50];
    char meaning[256];
    struct node *left, *right;
   };

我是这样开始的,但我不知道左边放哪些字,右边哪个字......

3 个答案:

答案 0 :(得分:3)

您应该使用类似suffix tree的内容,而不是二叉树。 BST实际上更多的是“更大/更少”的关系,这很难用词来映射。对于后缀树,您的节点是字符,分支最终会导致叶子代表实际的单词。

答案 1 :(得分:1)

通常,词典上比当前节点中的单词小的单词会向左移动,其余单词则向右移动。使用<对C ++的std::stringstrcmp进行C风格字符串(NUL终止的char数组)的比较。

答案 2 :(得分:1)

要放置哪些单词以及放置哪个单词仍然遵循BST的基本规则:保证给定根左侧的所有节点都小于该根的值,并且保证右侧的所有节点给定的root保证大于或等于root的值。

将相同的原则应用于您的词典。我不知道你是在使用C还是C ++,但是如果你使用的是C ++,我建议你创建一个“Word”结构,并重载它的相等运算符。然后在“节点”结构中,只有一个Word,一个左节点和一个右节点。

但是,BST不是字典数据结构的最佳选择。我会研究不同类型的地图和散列。