证明二叉查找树所有节点的平均深度
来源:互联网 发布:linux安装jdk报redcat 编辑:程序博客网 时间:2024/05/15 01:55
数据结构与算法分析(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)
0 0
- 证明二叉查找树所有节点的平均深度
- 求解二叉树所有节点的深度
- 二叉树的创建,遍历,查找,查找父节点,深度,大小等的递归实现
- 关于二叉查找树的平均查找时间的问题
- 查找二叉树节点
- 二叉树的中序、先序、后序、层序遍历 & 二叉树的深度 & 节点查找
- 求二叉树指定节点的深度
- 查找二叉树删除节点的操作
- 二叉查找树中节点的删除。
- 二叉树公共祖先节点的查找
- 删除二叉查找树的节点-LintCode
- 检测二叉查找树节点的情况
- 删除二叉查找树的节点
- 删除二叉查找树的节点
- 删除二叉查找树的节点
- 二叉查找树中节点的删除
- LintCode:删除二叉查找树的节点
- LintCode : 删除二叉查找树的节点
- GoogleMap-------manifest文件配置
- Java 打印各种直角三角形和乘法表
- GoogleMap-------解决不能使用问题
- linux使用crontab实现PHP执行定时任务
- c#自定义集合类
- 证明二叉查找树所有节点的平均深度
- 需要掌握的es6特性(一)
- AndroidManifest.xml详细分析
- 检测手机中是否安装了google地图,没有则提示安装,并跳转到地图查找特定的地点
- 01-复杂度1 最大子列和问题 (20分)
- TelephonyManager&GsmCellLocation类的方法详解
- Android实现短信监听并且转发到指定的手机号,转发后不留痕
- 安卓首次打开应用与Button状态保存
- 判断手机网络是否连接