Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 数字搜索树是如何工作的?_Algorithm_Data Structures_Tree_Binary Search Tree - Fatal编程技术网

Algorithm 数字搜索树是如何工作的?

Algorithm 数字搜索树是如何工作的?,algorithm,data-structures,tree,binary-search-tree,Algorithm,Data Structures,Tree,Binary Search Tree,我尝试了许多在线资源,但我无法理解数字二进制搜索树是如何工作的。下面的链接是供您参考的示例 (链接:) 有没有人用这些值构建一棵树,并详细说明它是如何工作的 A 00001 S 10011 E 00101 R 10010 C 00011 H 10100 树的构造方式使得可以使用键的二进制表示法(a,S,E,R,C,H)将它们定位到树中。在每个搜索步骤中,将键与curren节点(当前搜索的根)进行比较。如果键不是根,则键二进制表示的最高有效位用于选择左子树(如果位为0)或

我尝试了许多在线资源,但我无法理解数字二进制搜索树是如何工作的。下面的链接是供您参考的示例 (链接:)

有没有人用这些值构建一棵树,并详细说明它是如何工作的

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

树的构造方式使得可以使用键的二进制表示法(
a
S
E
R
C
H
)将它们定位到树中。在每个搜索步骤中,将键与curren节点(当前搜索的根)进行比较。如果键不是根,则键二进制表示的最高有效位用于选择左子树(如果位为
0
)或右子树(如果位为
1
)。将更详细地解释此过程

在您提供的示例中,键
H
(二进制表示法
10100
)如下所示

  • 在第一步中,根节点是node
    A
    。由于
    A
    不等于
    H
    ,因此使用位
    1
    ,表示应选择正确的子树。因此,我们考虑了节点<代码> S/COD>和位串<代码> 0100 > /COD>这是由于原始二进制表示省略了最高有效位。

  • 由于
    A
    不等于
    H
    ,因此我们使用最高有效位,即
    0
    ,表示选择左子树。我们考虑节点<代码> R>代码>位串<代码> 100 <代码> < < /P>
  • 由于
    R
    不等于
    H
    ,我们再次使用最高有效位,即
    1
    ,这意味着要选择正确的子树。我们考虑节点<代码> h <代码>和位串<代码> 00 < /C> >

  • 由于
    H
    等于
    H
    ,我们找到了所需的键,搜索终止


  • DST的工作原理类似于逐级检查位。如果o然后向左或向右移动,则检查位的起始位置。同时,它将位位置与电平进行比较

    例如:
    根处于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开始,向右移动,它必须作为第三级插入,所以检查第三位的位置,因为它是1,在右侧插入

    希望这能消除你的疑虑。 最后的DST是这样的
    [DST][1]:

    来自您自己的链接:该解释的哪一部分不清楚?我现在理解了搜索是如何工作的,但仍然不清楚:当我们使用位101遍历元素H(10100)的树,然后匹配其他两位(00),然后找到元素H,但当我们将元素插入到树中时,我们能自己制作数字序列吗?使用reference:cseweb.ucsd.edu/~kube/cls/100/touchts/lec15/lec15-10.htmltanks作为回复我现在了解了搜索是如何工作的,但仍然不清楚:当我们使用位101遍历元素H(10100)的树,然后匹配其他两位(00),然后找到元素H,但当我们将元素插入到树中时,我们能自己制作数字序列吗?使用参考:从描述中不太清楚。我猜这些键的二进制序列必须是相同长度和不同的;插入显然是以相同的方式遍历树(
    0
    表示分支到左子级,
    1
    表示分支到右子级),直到找到插入键的
    null
    引用。