Data structures 为什么按(相反)顺序添加节点会导致搜索效率低下?
我正在准备考试,无意中发现了以下问题: 绘制按以下顺序添加数据时将产生的二叉搜索树: 10,9,8,7,6,5,4,3 为什么生成的树不适合高效搜索 我的答覆是: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
我认为,在创建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,而这幅画显示了回答这个问题所付出的努力!美好的如果树是自平衡的,它可能是有效的。如果树是自平衡的,它可能是有效的。