二叉查找树的平均深度

本文详细探讨了二叉查找树的平均深度,通过数学公式推导得出,当二叉查找树的节点总数为N时,其平均深度为Davg(N)/N = O(logN)。

二叉查找树的平均深度

设一棵树总共有N个节点,其根节点的左子树有i个节点,则根节点的右子树有N-i-1个节点

设D(N)为该树的内部路径长(即所有节点的深度之和),那么其根节点的左子树内部路径长为D(i);其根节点的右子树内部路径长为D(N-i-1)

当左子树连接到根节点时,左子树内的每个节点的深度都将加一,同理,右子树亦是如此。所以左右子树连接到根节点时深度总共增加N-1
∴D(N)=D(i)+D(N−i−1)+N−1(1) \therefore D(N)=D(i)+D(N-i-1)+N-1 \tag 1 D(N)=D(i)+D(Ni1)+N1(1)
设二叉查找树的平均内部路径长为Davg(N)D_{avg}(N)Davg(N),则二叉树的平均深度为Davg(N)/ND_{avg}(N)/NDavg(N)/N,因此问题转变为求解Davg(N)D_{avg}(N)Davg(N)

计算二叉查找树的平均内部路径长,即i∈[0,N)i\in[0,N)i[0,N),i在该范围内每个取值的概率都是一样的,也就是i=0, i=1, …, i=N-1,出现概率相等,将所有可能取值的内部路径长求和计算平均值,即可得Davg(i)D_{avg}(i)Davg(i)
Davg(i)=1/N∑i=0N−1D(i)(2) D_{avg}(i)=1/N\sum_{i=0}^{N-1}D(i) \tag 2 Davg(i)=1/Ni=0N1D(i)(2)

∵N−i−1∈[0,N)(3) \because N-i-1\in[0,N) \tag 3 Ni1[0,N)(3)

∴Davg(N−i−1)=Davg(i)(4) \therefore D_{avg}(N-i-1)=D_{avg}(i) \tag 4 Davg(Ni1)=Davg(i)(4)

将(2)与(4)代入(1)可得
Davg(N)=2/N∑i=0N−1Davg(i)+N−1(5) D_{avg}(N)=2/N\sum_{i=0}^{N-1}D_{avg}(i)+N-1 \tag 5 Davg(N)=2/

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值