我们可以用数学方法解决这个问题:
定义最坏情况
现在,在任何Binary Tree 中,searching 的时间复杂度为 O(h),其中h 是Binary Tree 的高度。
现在,在最坏的情况下,我们希望找到最大高度。
如果是简单的Binary Search Tree,没有平衡因子
节点上的条件,这个最大高度可以是n 或n+1 (取决于
按照惯例,单节点树的高度是 1 还是 0)
其中n 是节点数。
因此,我们可以说given number of nodes, worst case is maximum height。
有趣的是,我们也可以说given height of a tree, the worst case is minimum nodes。即使对于这样的最小节点数,我们也可能必须遍历高度为h 的树,我们也必须这样做才能获得最大节点数。
因此,直觉应该很清楚Given Height of Tree, the worst case is minimum number of nodes.
将此概念应用于二叉搜索树
- 让我们尝试构建高度为
H 的二叉搜索树,使得树中的节点数最少。李>
在这里,我们将利用二叉树是递归数据这一事实
结构(二叉树可以用二叉树来定义)
-
我们将使用符号 NH 来表示高度为 H 的 二叉搜索树 中的最小节点数强>
-
我们将创建一个根节点
-
到根的Left(或Right),添加高度为H-1(利用递归属性)的子树。因此,整个树中的节点数最少,Left(或Right)子树中的节点数也应该是最少的。因此 NH 是
NH-1
-
我们需要向右(或左)添加任何内容吗?
没有。因为 BST 没有平衡因子的限制。因此,我们的树看起来像
-
因此,要构造高度为H 的二叉搜索树,使得树中的节点数最少,我们可以取二叉搜索树高度为H-1,使得节点数为
最少,可以添加1个根节点。
因此,我们可以将Recurrence Relation 形成为
NH = NH-1 + 1
基本条件为
N0=1
要创建高度为 0 的 BST,我们需要添加一个节点。在整个答案中,我们将使用此约定
-
现在,这个Recurrence Relation 很容易通过替换来解决,因此
NH = H+1
NH > H
-
现在,让n 为高度为 H 的 BST 中的节点数
那么,
n≥NH
n≥H
H≤n
所以,
H=O(n)
要么
O(H) = O(n)
因此,搜索的Worst Case Time Complexity将是O(n)
在 AVL 树上应用这个概念
我们可以在 AVL 树上应用类似的概念。在阅读解决方案的后面部分后,可以找到递归关系:
NH = NH-1 + NH-2 + 1
基础条件:
N0 = 1
N1 = 2
并且,求解递归的不等式条件将是
NH ≥ ((1+√5)/2)H
然后,设n 为节点数。因此,
n≥NH
在简化时,可以得出结论
H ≤ 1.44log2(n)
在 GIVEN 树上应用这个概念
-
让我们尝试构造高度为H 的Given Tree,使得树中的节点数最少。
-
我们将使用符号 NH 来表示高度为 H 的 Given Tree 中的最小节点数
-
我们将创建一个根节点
-
到根的Left(或Right),添加高度为H-1(利用递归属性)的子树。因此,整个树中的节点数最少,Left(或Right)子树中的节点数也应该是最少的。因此 NH 是
NH-1
-
我们需要向右(或左)添加任何内容吗?
是的! 因为节点上有平衡因子的限制。
我们需要在Right(或Left)上添加子树。 它的高度应该是多少?
H?
不,那么整棵树的高度将变为 H+1
H-1?
允许!因为 Root 的平衡因子将为 0
H-2?
允许!因为根的平衡因子将是 1
H-3?
允许!因为根的平衡因子将是 2
H-4?
不允许!因为 Root 的平衡因子将变为 3
我们想要最少的节点数,所以在H-1、H-2 和H-3 中,我们将选择H-3。因此,整个树中的节点数最少,右(或左)子树中的节点数也应该是最少的。因此 NH 是 也是 的函数
NH-3
-
因此,要构造高度为H 的给定树,使得树中的节点数最少,我们可以有 LEFT子树为
Given Tree 高度 H-1 使得 节点数 是 minimum 并且可以将 RIGHT 子树作为 Given Tree的高度H-3 使得其中的节点数也是最少,并且可以添加一个根节点。我们的树看起来像
因此,我们可以将递归关系形成为
NH = NH-1 + NH-3 + 1
基本条件为
N0=1
N1=2
N2=3
-
现在,这个Recurrence Relation 很难解决。但是感谢this answer,我们可以得出结论
NH > (√2)H
-
现在,让n 为 Given Tree 中的节点数,然后,
n≥NH
n ≥ (√2)H
对数√2(n) ≥ H
H ≤ log√2(n)
H≤2log2(n)
因此,H=O(log(n))
或O(H) = O(log(n))
因此,在这个给定树中搜索的最坏情况时间复杂度将是O(log(n))
因此,数学证明!