数字搜索树如何工作?

时间:2015-03-18 05:04:33

标签: algorithm data-structures tree binary-search-tree

我尝试了很多在线资源,但我无法理解数字二进制搜索树是如何工作的.Below Link就是您的参考示例 (链接:http://cseweb.ucsd.edu/~kube/cls/100/Lectures/lec15/lec15-10.html

是否有人使用这些值构建树,并详细说明它是如何工作的?

A   00001
S   10011
E   00101
R   10010
C   00011
H   10100

2 个答案:

答案 0 :(得分:2)

树的构造方式是键的二进制表示形式(ASERC,{ {1}})可用于将它们定位到树中。在每个搜索步骤中,将密钥与当前节点(当前搜索的根3)进行比较。如果密钥不是根,则密钥的二进制表示的最高有效位用于选择左子树(如果位是H)或右子树(如果位是0 )。更详细地解释了此过程here

在您提供的示例中,可以按如下方式找到键1(二进制表示H)。

  1. 在第一步中,根是节点10100。由于A不等于A,因此使用位H,表示应选择正确的子树。因此,我们认为节点1和位串S是由原始二进制表示产生的,省略了最重要的位。

  2. 由于0100不等于A,我们使用最重要的位,即H,表示选择了左子树。我们考虑节点0和位串R

  3. 由于100不等于R,我们再次使用最重要的位,即H,这意味着要选择正确的子树。我们考虑节点1和位串H

  4. 由于00等于H,我们找到了所需的密钥,搜索终止。

答案 1 :(得分:1)

DST的工作方式类似于逐级检查位。如果o然后向左移动或从右移动,则检查该位的开始。同时它将位位置与级别进行比较。

例如:
Root处于O级别,

  • 如果要插入的位在第1级,则检查第1位,
  • 如果0然后作为左边插入或者如果它是1然后插入右边。

类似地,对于第二级,检查要插入的第二位,并对其余级别执行此操作。

在给定的例子中;

首先A(00001)是根节点,然后是S(10011),因为1,向右移动并插入。

接下来是E(00101),因为0向左移动并插入,序列中的下一个是R(10010),因为1向右移动,第二个位置的位是0所以它作为一个插入S的左孩子。

接下来的序列是C(00011),0因此向左移动,因为第二位是0插入左侧,接下来是H(10100),因为它从1开始,向右移动,它必须插入为3级,因此检查第3位位置,因为它是1,它插入右侧。

希望这会清除你的怀疑。  所以最终的DST看起来像这样 [夏令时] [1]:https://i.stack.imgur.com/Iet4n.gif