证明二叉查找树所有节点的平均深度为O(logN)
数据结构与算法分析(c语言描述)第4章 P78
概念一:一棵树所有节点的深度和称为内部路径长
令D(N)为一棵有N节点的树的内部路径长么,即有D(1)=0,
设一棵树的左子树的内部路径长为D(i),则右子树的内部路径长为D(N-i-1)(右子树节点个数=N-左子树节点个数-根节点)
综上:
D(N)=D(i)+D(N-I-1)+N-1 (在原树内,左子树与右子树所有节点的深度+1,总共深度增加N-1)
如果所有子树大小都等可能出现(对于左子树或右子树来说,大小在0—N-1之间浮动,比如:左子树的大小最小为0,最大为N-1,这其中任何值都是等可能出现的)
则D(i)与D(N-i-1)的平均内部路径长为(1/N)∑D(j) (上标=N-1,下标=0)
综上:
D(N)=(2/N)*∑D(j)+N-1
再根据p185页化简可得:D(N)=O(logN)
所以,二叉查找树所有节点的平均深度为O(logN)
由此引申可得二叉查找树Find的运行时间为O(logN),Insert,Delete操作的核心步骤皆为Find,所以,Find,Insert,Delete的平均运行时间为O(logN)