数字搜索树如何工作?
How Digital search trees Work?
我尝试了很多在线资源,但我无法理解数字二叉搜索树 works.Below Link 的示例,供您参考
(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
树的构造方式是键的二进制表示 (A
,S
,E
,R
,C
,H
) 可用于将它们定位到树中。在每个搜索步骤中,将关键字与当前节点(当前搜索三个节点的根)进行比较。如果密钥不是根,则密钥二进制表示的最高有效位用于 select 左子树(如果该位为 0
)或右子树(如果该位为 1
).更详细地解释了此过程 here。
在您提供的示例中,密钥H
(二进制表示10100
)可以如下找到。
第一步,根是节点A
。由于A
不等于H
,所以使用1
位,表示应该选择右子树。因此,我们考虑节点 S
和位串 0100
,它们是通过省略最高有效位从原始二进制表示中产生的。
由于A
不等于H
,我们使用最高位,即0
,表示左子树的选择。我们考虑节点 R
和位串 100
.
由于R
不等于H
,我们再次使用最高有效位,即1
,这意味着右子树是选择。我们考虑节点 H
和位串 00
.
由于 H
等于 H
,我们找到了所需的键,搜索终止。
DST 的工作方式类似于逐级检查位。如果 o 然后向左移动或向右移动,则检查位的开始。同时它将位位置与电平进行比较。
例如:
Root在O级,
- 如果要插入的位在第 1 级,则检查第 1 位,
- 如果为 0 则在左侧插入,如果为 1 则在右侧插入。
与第二层类似,检查要插入的第二位,并像这样对其余层进行操作。
在给定的例子中;
首先A(00001)为根节点,然后S(10011)从1开始,向右移动插入。
接下来是E(00101),因为0向左移动插入,所以序列中接下来是R(10010),因为1向右移动,所以第二个位置的位是0所以插入作为 S.
的左 child
序列中next是C(00011),0所以向左移动因为第2位是0插入左边,next是H(10100),因为是从1开始向右移动,所以必须作为第 3 级插入,因此请检查第 3 位位置是否为 1,它插入在右侧。
希望这会消除您的疑虑。
所以最终的夏令时看起来像这样
[夏令时] [1]: https://i.stack.imgur.com/Iet4n.gif
我尝试了很多在线资源,但我无法理解数字二叉搜索树 works.Below Link 的示例,供您参考 (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
树的构造方式是键的二进制表示 (A
,S
,E
,R
,C
,H
) 可用于将它们定位到树中。在每个搜索步骤中,将关键字与当前节点(当前搜索三个节点的根)进行比较。如果密钥不是根,则密钥二进制表示的最高有效位用于 select 左子树(如果该位为 0
)或右子树(如果该位为 1
).更详细地解释了此过程 here。
在您提供的示例中,密钥H
(二进制表示10100
)可以如下找到。
第一步,根是节点
A
。由于A
不等于H
,所以使用1
位,表示应该选择右子树。因此,我们考虑节点S
和位串0100
,它们是通过省略最高有效位从原始二进制表示中产生的。由于
A
不等于H
,我们使用最高位,即0
,表示左子树的选择。我们考虑节点R
和位串100
.由于
R
不等于H
,我们再次使用最高有效位,即1
,这意味着右子树是选择。我们考虑节点H
和位串00
.由于
H
等于H
,我们找到了所需的键,搜索终止。
DST 的工作方式类似于逐级检查位。如果 o 然后向左移动或向右移动,则检查位的开始。同时它将位位置与电平进行比较。
例如:
Root在O级,
- 如果要插入的位在第 1 级,则检查第 1 位,
- 如果为 0 则在左侧插入,如果为 1 则在右侧插入。
与第二层类似,检查要插入的第二位,并像这样对其余层进行操作。
在给定的例子中;
首先A(00001)为根节点,然后S(10011)从1开始,向右移动插入。
接下来是E(00101),因为0向左移动插入,所以序列中接下来是R(10010),因为1向右移动,所以第二个位置的位是0所以插入作为 S.
的左 child序列中next是C(00011),0所以向左移动因为第2位是0插入左边,next是H(10100),因为是从1开始向右移动,所以必须作为第 3 级插入,因此请检查第 3 位位置是否为 1,它插入在右侧。
希望这会消除您的疑虑。 所以最终的夏令时看起来像这样 [夏令时] [1]: https://i.stack.imgur.com/Iet4n.gif