【问题标题】:Why is a binary tree is preferable to an array of values that has been sorted?为什么二叉树比已排序的值数组更可取?
【发布时间】:2015-03-10 10:57:35
【问题描述】:

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

在任何一种情况下,找到给定的键值(通过遍历二叉树,或通过对排序数组执行二分查找)都需要 O(log n) 的时间复杂度。

【问题讨论】:

    标签: arrays sorting data-structures tree


    【解决方案1】:

    二叉树更适合插入/删除操作,时间复杂度为 O(log n)。然而,数组的插入/删除将是 O(n)。

    【讨论】:

      【解决方案2】:

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

      Binary Search Tree - 一种二叉树,其中每个节点都有一个可比较的键,并且满足任何节点中的键大于该节点左子树中所有节点中的键且小于该节点左子树中所有节点中的键的限制。该节点的右子树中的所有节点。

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

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

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

      【讨论】:

      • 问题是在两种数据结构中查找元素,而不是直接访问元素。
      • 在这种情况下,您应该以不同的方式提出问题。
      猜你喜欢
      • 1970-01-01
      • 2018-09-19
      • 2015-02-28
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多