【问题标题】:Searching an item in a balanced binary tree在平衡二叉树中搜索项目
【发布时间】:2017-08-23 18:20:59
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多