为什么二叉树比已排序的值数组更可取?

时间:2015-03-10 10:57:36

标签: arrays sorting data-structures tree

为什么二叉树比已排序的值数组更可取?

在任何一种情况下,查找给定的键值(通过遍历二叉树,或通过对已排序的数组执行二进制搜索)都会带来时间复杂度O(log n)。

2 个答案:

答案 0 :(得分:1)

二进制树对于插入/删除是优选的,其可以在O(log n)的时间复杂度中完成。然而,在数组的情况下插入/删除将是O(n)。

答案 1 :(得分:0)

二叉树 - 每个节点最多有两个子节点的树,称为左子节点和右子节点。

二进制搜索树 - 一个二叉树,其中每个节点具有可比较的密钥,并且满足任何节点中的密钥大于该节点的左子树中的所有节点中的密钥并且小于中的密钥的限制。该节点右侧子树中的所有节点。

您可能指的是二进制搜索树。平均时间复杂度为O(log n),最坏情况时间复杂度为O(n),用于在使用链表实现的二叉搜索树中查找元素。最糟糕的情况是树完全不平衡的情况。另一方面,在排序数组中查找元素的最坏情况时间复杂度是O(log n)。因此,二元搜索树优先于排序数组以查找给定值。

您的要求将决定哪种数据结构更可取。

  • 当连续的可用内存不足时,使用链表实现二进制搜索树会更好。
  • 二叉搜索树中的插入速度更快。
  • 直接访问元素在使用链表实现的二叉搜索树中具有O(log n)的时间复杂度,并且在排序数组中实现O(1)。注意,对于二叉搜索树,最坏的情况是O(n)。在这种情况下,二叉搜索树将完全不平衡。