
数据结构与算法分析
文章平均质量分 60
柳下乱
行者,永无疆
展开
-
二叉查找树的向上取整/向下取整查找
此算法于《算法》P257有描述 所谓向上取整就是指大于等于x的最小整数,向下取整是指小于等于x的最大整数此算法在二叉查找树中查找大于等于x的最小整数/小于等于x的最大整数 算法主要分为几种情况讨论(以向上取整为例):1.当前节点的键值小于x:目标肯定位于当前节点的左子树,因为右子树>当前节点>目标节点,所以不可能在右子树2.当前节点的键值大于x:目标肯定位于...原创 2016-07-21 17:40:43 · 4061 阅读 · 3 评论 -
AVL树的插入与删除操作
AVL树是一种较老的数据结构,它的出现是为了解决了二叉查找树在最坏情况下的插入结果。二叉查找树(以下称为二叉树)如果能以较好的插入序列来创建,使得树的结构趋于平衡,则其大部分操作都可以O(logN)的复杂度实现。但如果以类似{1,2,3,4,5,6,.....}这种已序序列来进行插入,那么形成的二叉树将是极不平衡的,甚至有可能只有左子树或只有右子树,这样的二叉树与链表是没有太大区别的,各种操作原创 2016-07-22 20:30:19 · 4439 阅读 · 8 评论 -
证明二叉查找树所有节点的平均深度
数据结构与算法分析(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 (在原树内,左子树与右子树所有节点的原创 2016-07-21 11:22:58 · 4771 阅读 · 1 评论 -
二叉查找树的层序遍历
二查找树层序遍历的思路是沿着树中同一深度的节点进行遍历难点在于如何在同层节点之间移动,一般方法为预先处理,即在处理父节点时将子节点信息保存,而且要注意需要从左向右顺序遍历,很自然的使用FIFO的队列就可以啦~由于我们在处理当前层时预先将下一层的节点入列,那我们如何知道什么时候处理完当前层了呢?我们可以在每次处理完当前层时放置一个结束的标识,因为队列节点的键值为TreeNode *,所以原创 2016-07-21 16:42:31 · 1092 阅读 · 0 评论 -
二叉查找树查找指定排名元素的算法
问题如下:1.查找在二叉查找树中按大小排名为k的节点(如果元素x排名为k,则有k个元素排在x的前面,排名以0为起点),以升序排序 2.给出指定键值,返回其在二叉查找树中的排名,升序排序第1个问题分析:1.任意节点的左子树中的所有节点一定排在自身前面 2.如果左子树中节点不足,比如查找排名为6的节点,但左子树中只有3个节点,则在右子原创 2016-07-21 17:48:14 · 3150 阅读 · 0 评论