在平衡二叉树中搜索项目

时间:2017-03-30 02:29:38

标签: time-complexity binary-tree big-o

如果我有一个平衡的二叉树,并且我想在其中搜索一个项目,那么大的时间复杂度是O(n)吗?在二叉树中搜索一个项目,无论它是否平衡,都会改变O(n)的大时间复杂度?我明白如果我们有一个平衡的BST,那么搜索一个项目就相当于BST的高度所以O(log n)但是正常的二叉树呢?

1 个答案:

答案 0 :(得分:1)

平衡BST中的O(log n)搜索时间由两个属性促进:

  1. 树中的元素通过比较排列
  2. 树(大致)平衡。

如果您丢失了其中任何一个属性,那么您将不再获得O(log n)搜索时间。

如果您正在搜索未对特定值进行排序(也就是非BST)的平衡二叉树,则必须检查树中的每个节点以确保找到您要查找的值,因此它需要O(n)时间。

对于一个不平衡的树,如果你想象出一个不平衡的最坏情况,其中每个节点只有一个孩子,除了叶子本质上是一个链表,它可能会有所帮助。如果您有完全(或大部分)不平衡的BST,搜索将花费O(n)时间,就像链接列表一样。

如果未排序的二叉树不平衡,它仍然有n个节点并且它们仍未排序,因此它仍然需要O(n)时间。