二叉查找树的平均深度
设一棵树总共有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(N−i−1)+N−1(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=0∑N−1D(i)(2)
∵N−i−1∈[0,N)(3) \because N-i-1\in[0,N) \tag 3 ∵N−i−1∈[0,N)(3)
∴Davg(N−i−1)=Davg(i)(4) \therefore D_{avg}(N-i-1)=D_{avg}(i) \tag 4 ∴Davg(N−i−1)=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/

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

被折叠的 条评论
为什么被折叠?



