【发布时间】:2015-03-10 10:57:35
【问题描述】:
为什么二叉树比已排序的值数组更可取?
在任何一种情况下,找到给定的键值(通过遍历二叉树,或通过对排序数组执行二分查找)都需要 O(log n) 的时间复杂度。
【问题讨论】:
标签: arrays sorting data-structures tree
为什么二叉树比已排序的值数组更可取?
在任何一种情况下,找到给定的键值(通过遍历二叉树,或通过对排序数组执行二分查找)都需要 O(log n) 的时间复杂度。
【问题讨论】:
标签: arrays sorting data-structures tree
二叉树更适合插入/删除操作,时间复杂度为 O(log n)。然而,数组的插入/删除将是 O(n)。
【讨论】:
二叉树 - 每个节点最多有两个孩子的树,称为左孩子和右孩子。
Binary Search Tree - 一种二叉树,其中每个节点都有一个可比较的键,并且满足任何节点中的键大于该节点左子树中所有节点中的键且小于该节点左子树中所有节点中的键的限制。该节点的右子树中的所有节点。
您可能指的是二叉搜索树。在使用链表实现的二叉搜索树中查找元素的平均时间复杂度为 O(log n),最坏情况的时间复杂度为 O(n)。最坏的情况是树完全不平衡的情况。另一方面,在排序数组中查找元素的最坏情况时间复杂度是 O(log n)。因此,在查找给定值时,二叉搜索树优于排序数组是不正确的。
您的需求将决定哪种数据结构更可取。
【讨论】: