算法学习03——树(三)二叉树的平均情况分析

本文探讨了二叉树中操作的时间复杂度与节点深度的关系,通过计算内部路径长D(N)来分析二叉树所有节点的平均深度。在假设节点大小等可能出现的情况下,得出D(N)的期望为O(NlogN),从而得出平均路径长度为O(logN)。
摘要由CSDN通过智能技术生成

树(三)——二叉树的平均情况分析

显而易见,一个二叉树所支持的操作时间复杂度取决于操作项所在的节点深度,即O(d),d是节点的深度。因此计算二叉树所支持的操作的时间复杂度需要求解一个树的所有节点的平均深度。
一棵树的所有节点深度的和称为内部路径长,即D(N),而D(1)=0,因为只有根节点的路径为0。一颗N个节点的树由一个i个节点的左子树和N-i-1个节点的右子树以及一个根节点组成。i个节点的左子树的内部路径长为D(i),同理N-i-1个节点的右子树的内部路径长为D(N-i-1)。而在原树中,左右子树的路径都要再经过根节点,因此内部路径长需要增加N-1。即:

D ( N ) = D ( i ) + D ( N − i − 1 ) + N − 1 D ( N ) = D( i ) + D( N-i-1 ) + N - 1 D(N)=D(i)+D(Ni1)+N1

假设字数的大小都是等可能出现的,那么D(N)的期望是:

$$
D( N ) = N \sum^{N-1}_ {i=0} ( D(i) + D( N- i -1 ) ) + N - 1

= \frac{2}{N} \sum^{N-1}_ {i=0}D( i ) +N
$$
计算可得 D ( N ) = O ( N l o g N ) D (N) = O( NlogN ) D(N)=O(NlogN)。计算过程如下:

D ( N ) = 2 N ∑ i = 0 N − 1 D ( i ) + N D ( N + 1 ) = 2 N + 1 ∑ i = 0 N D ( i ) + N + 1 \begin{aligned} D( N )&=& \frac{2}{N} \sum^{N-1}_ {i=0}D( i ) +N\\ D( N+1 )&=& \frac{2}{N+1} \sum^{N}_ {i=0}D( i ) +N + 1 \end{aligned} D(N)D(N+1)==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值