Data structures 为什么按(相反)顺序添加节点会导致搜索效率低下?

Data structures 为什么按(相反)顺序添加节点会导致搜索效率低下?,data-structures,binary-search-tree,Data Structures,Binary Search Tree,我正在准备考试,无意中发现了以下问题: 绘制按以下顺序添加数据时将产生的二叉搜索树: 10,9,8,7,6,5,4,3 为什么生成的树不适合高效搜索 我的答覆是: 我认为,在创建BST时,我们首先以值10作为根节点,然后在第一级上添加9作为左子树值。然后8到9的左子树,依此类推。我不知道为什么这使得搜索效率低下。有什么想法吗?因为这些值是按降序排列的,所以它们会在每一级添加到左侧,实际上会给您留下一个链接列表,用于搜索,而不是BST的首选OlogN 图纸: 10

我正在准备考试,无意中发现了以下问题:

绘制按以下顺序添加数据时将产生的二叉搜索树:

10,9,8,7,6,5,4,3

为什么生成的树不适合高效搜索

我的答覆是:


我认为,在创建BST时,我们首先以值10作为根节点,然后在第一级上添加9作为左子树值。然后8到9的左子树,依此类推。我不知道为什么这使得搜索效率低下。有什么想法吗?

因为这些值是按降序排列的,所以它们会在每一级添加到左侧,实际上会给您留下一个链接列表,用于搜索,而不是BST的首选OlogN

图纸:

              10
             /
            9
           /
          8
         /
        7
       /
      6
     /
    5
   /
  4
 /
3

由于这些值是按降序排列的,因此它们会在每一级添加到左侧,实际上会留下一个链表,用于搜索,而不是BST的首选OlogN

图纸:

              10
             /
            9
           /
          8
         /
        7
       /
      6
     /
    5
   /
  4
 /
3

这将创建一个链表,因为它只是一系列节点;这是一棵严重失衡的树


你应该抬头看看。它们具有相同的时间复杂性,但它会不断围绕节点移动,因此它总是形成三角形。这将保持树的平衡。

这将创建一个链接列表,因为它只是一系列节点;这是一棵严重失衡的树


你应该抬头看看。它们具有相同的时间复杂性,但它会不断围绕节点移动,因此它总是形成三角形。这将保持树的平衡。

这是低效的,因为该节点将始终添加到前一个节点的左子树中。对列表中的每一个节点进行搜索检查,直到找到结果为止,即使答案总是在左边,这实际上比简单地通过循环搜索列表需要更多的计算。

这是低效的,因为节点总是被添加到前一个节点的左子树中。对列表中的每个节点进行搜索检查,直到找到结果为止,即使答案总是在左边,这样实际上比简单地通过循环搜索列表需要更多的计算。

+1用于图形。一张图片能说出一千个单词,即使它是ASCII艺术:+1,而这幅画显示了回答这个问题所付出的努力!很好+1为图纸。一张图片能说出一千个单词,即使它是ASCII艺术:+1,而这幅画显示了回答这个问题所付出的努力!美好的如果树是自平衡的,它可能是有效的。如果树是自平衡的,它可能是有效的。