我尝试了很多在线资源,但我无法理解数字二进制搜索树是如何工作的.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
答案 0 :(得分:2)
树的构造方式是键的二进制表示形式(A
,S
,E
,R
,C
,{ {1}})可用于将它们定位到树中。在每个搜索步骤中,将密钥与当前节点(当前搜索的根3)进行比较。如果密钥不是根,则密钥的二进制表示的最高有效位用于选择左子树(如果位是H
)或右子树(如果位是0
)。更详细地解释了此过程here。
在您提供的示例中,可以按如下方式找到键1
(二进制表示H
)。
在第一步中,根是节点10100
。由于A
不等于A
,因此使用位H
,表示应选择正确的子树。因此,我们认为节点1
和位串S
是由原始二进制表示产生的,省略了最重要的位。
由于0100
不等于A
,我们使用最重要的位,即H
,表示选择了左子树。我们考虑节点0
和位串R
。
由于100
不等于R
,我们再次使用最重要的位,即H
,这意味着要选择正确的子树。我们考虑节点1
和位串H
。
由于00
等于H
,我们找到了所需的密钥,搜索终止。
答案 1 :(得分:1)
DST的工作方式类似于逐级检查位。如果o然后向左移动或从右移动,则检查该位的开始。同时它将位位置与级别进行比较。
例如:
Root处于O级别,
类似地,对于第二级,检查要插入的第二位,并对其余级别执行此操作。
在给定的例子中;
首先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