构造最优二叉查找树的时间复杂度分析

本文详细探讨了最优二叉查找树的概念,解释了查找期望代价的计算方式,并通过穷举、递归和动态规划三种方法分析了构造最优二叉查找树的时间复杂度。穷举方法的时间复杂度为O(4n·n^(-3/2)),递归方法为O(3^n),而动态规划方法的时间复杂度可降至O(n^3),进一步优化后可达到O(n^2)。
摘要由CSDN通过智能技术生成

概念


      二叉查找树(BST,Binary Search Tree),又名二叉搜索树或二叉检索树,是一颗满足如下条件的树:
      1、每个节点包含一个键值
      2、每个节点有最多两个孩子
      3、对于任意两个节点x和y,它们满足下述搜索性质:
            a、如果y在x的左子树里,则key[y] <= key[x]
            b、如果y在x的右子树里,则key[y] >= key[x]


      最优二叉查找树(Optimal BST,Optimal Binary Search Tree)
      最优二叉查找树是使查找各节点平均代价最低的二叉查找树。具体来说就是:给定键值序列 K = <k1, k2, . . . , kn>,k1 < k2 <· · · < kn,其中键值ki,被查找的概率为pi,要求以这些键值构建一颗二叉查找树T,使得查找的期望代价最低(查找代价为检查的节点数)。
      下面是对于查找期望代价的解释:
      对于键值ki, 如果其在构造的二叉查找树里的深度(离开树根的分支数)为depthT(ki),则搜索该键值的代价= depthT(ki) +1(需要加上深度为0的树根节点)。由于每个键值被查找的概率分别为pi,i=1,2,3…,n。所以查找期望代价为: 
      E[T的查找代价] = ∑i=1~n(depthT(ki) +1) · pi

 

 

 

时间复杂度

 

 

      1、穷举
      穷举构造最优二叉查找树,其实就是这样的一个问题:
      给一个拥有n个数的已排序的节点,可以将其构造成多少种不同的BST(用来找到一个最优的二叉查找树)?
      设可以构造成T(n)个,那么枚举每一个元素作为根节点的情况,当第一个元素作为根节点时,其余n-1个构成右子树,无左子树,是n-1情况时的子问题,共T(n-1)种;当第二个元素作为根节点时,左子树有1个元素,右子树有n-2个元素,根据

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值