【问题标题】:How to insert strings in BST如何在 BST 中插入字符串
【发布时间】:2015-05-17 14:17:28
【问题描述】:

我知道如何将整数插入二叉搜索树

  • 向左变小
  • 向右变大

但只有当 Data/Key 为整数时,该公式才适用。

所以我想知道如何将字符串插入 BST

我已经搜索了谷歌,但找不到任何答案

【问题讨论】:

  • 也许你可以利用:字符串比较来判断字符串是节点的“大”还是“小”,msdn.microsoft.com/en-us/library/84787k22(v=vs.110).aspx
  • 只需实现一些比较器,您可以将 2 个对象传递给它们,而不考虑它们的类型(这里是字符串),它会告诉您哪个更少或更大。例如,它可以是一个函数,如果对象相等则返回 0,如果 first 大于则返回 1,如果 first 小于则返回 -1。然后不要像这样比较 if(a > c) 比较像 if(CheckObjects(a, b) = 1)
  • 二叉树中的键不需要是整数;教科书只使用它,因为它是具有总顺序的最简单的数据结构。但是您可以使用任何其他有订单的东西,例如使用lexicographical order的字符串。

标签: c# oop data-structures binary-tree binary-search-tree


【解决方案1】:

访问:http://www.kerryr.net/pioneers/ascii2.htm

分析字母表的十进制等值。

例如:如果要比较“豹”和“眼镜蛇”。 取两个“l”和“c”的第一个字符,将它们转换为它们的十进制等效值,分别应该是 108 和 99。比较它们 如果 1st 大于 2nd 则 2nd 更小,如果 2nd 大于 1st。第一个更小。如果两者相等,则迭代到两者的下一个字母,例如:比较“fox”和“frog”,我们无法通过仅比较第一个字符来找到较小的单词,我们需要迭代到第二个字符“o”和'r'分别。因为'o'小于'r'。所以,“狐狸”比“青蛙”小。 因此,仅将 cobra 与 leopard 进行比较,直到长度为 5(总字符数较少的单词长度)。如果两个单词在总字符数较少的单词长度之前相等,则长度较大的单词将自动变大。例如:“性格”和“特色”。两者都相等,直到长度为 9,但第二个单词的长度更大。所以,第二个会更大。

现在,您可以看到“cobra”比“leopard”小。您也可以自己为字母分配值。例如

a=1

b=2

c=3

d=4

.

.

.

z=26

【讨论】:

    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多