摘要: 在看二叉排序树查找分析时,对“二叉排序树查找不成功的平均查找长度”不是很理解,上网查了一下,稍微小结一下: 假如一棵二叉排序树如下:那么查找不成功的平均查找长度是:(2*2+3*3+4*2)/7=21/7比如说一个数如果比62<x<74,那他应该是在74左接点,但是现在74左接点不存在,所以查找不成功,那么就是查找了2次。 你再查找x>74的接点,他应该是在74右接点上,但是不存在,也是两次。所以由于74左右孩子不存在,查找62<x<74和x>74的总次数是2*2 15的左右孩子不存在,当查找x<15和15<x<30查找的次数是2*3,56 阅读全文
posted @ 2012-12-16 14:28 简单地快乐 阅读(22886) 评论(1) 推荐(2)
摘要: 继续小结: 树向二叉树的转换,树的根节点还是二叉树的根节点,根的子树森林构成一棵树二叉树作为根节点的左子树。 二叉树向树的转换则需要一些条件,这个条件是什么呢?就是这颗二叉树没有右子树。要明白一点,右子树都是兄弟,左子树都是孩子(左子右兄)。同时也能知道如果树用二叉链表存储的话,如果结点没有左子树则意味着其没有孩子,则意味这其是叶子节点。 森林向二叉树的转换,二叉树的根节点是第一棵子树的根节点,第一棵子树的子树森林构成一棵二叉树作为根节点的左子树,其余的树(也就是森林中除了第一棵树外其他的树)构成一棵二叉树,作为根节点的右子树。 二叉树向森林的转换,二叉树的根和其右子树转换成第一棵树。(这个. 阅读全文
posted @ 2012-12-15 21:55 简单地快乐 阅读(2079) 评论(0) 推荐(0)
摘要: 最近复习一下数据结构,又加深了一些问题的理解。 递归大家都很熟悉了,但是什么时候能用递归?什么时候不能用递归呢?大家在学习汉诺塔、二叉树和树的时候经常用到递归,但是为什么这些时候能用递归,而其他时候不能用到递归呢? 递归的使用就是知道递归的次数是可知的并且是恒定的(这里的次数并不是递归的深度,举个例子吧,遍历二叉树的根节点后,你明确的知道要遍历左子树和右子树,那么这里的次数就是2,2是已知的并且不会随节点的变化而变化),在二叉树中,仅仅有左子树和右子树两种情况,所以能用递归。 可能有人又会问了,我也见过数的遍历中用到递归的啊,这个每个节点的孩子数目是不一定的啊,这又怎么解释呢?我可以说,这种. 阅读全文
posted @ 2012-12-15 21:28 简单地快乐 阅读(459) 评论(0) 推荐(0)
摘要: 刚才看到同学借的一本书《暗时间》,就随便翻了翻,看到作者是刘未鹏并且书上给出一些对他的简介还有他的博客地址,就上网查了查。看了一篇他的《我在南大的七年》,有点感触,随便一写。 看到他对新东西的强烈的求知动机,看到他高三就研究什么《电脑爱好者》和《电脑报》的内容,感觉自己和他差距很大很大。逐渐我又意识到一点:我在博客上发现了好多牛人,每次都说和他们的差距好大,但是光这样说有什么用呢??我总是在羡慕他们的算法能力、c++能力等,总是羡慕他们怎么就那么早就开始接触这些东西,总是为自己没像他们一样那么早就接触了这些东西而遗憾,可是这又有什么用呢?我没看见他们付出的努力,总是临渊羡鱼。 从小的时候,看. 阅读全文
posted @ 2012-12-09 19:46 简单地快乐 阅读(204) 评论(0) 推荐(0)
摘要: 1.为什么说中断是进程切换的必要条件,但不是充分条件? 假如在时刻T1到时刻T2之间发生了进程切换,则在时刻T1与时刻T2之间一定执行了处理机调度程序,处理机调度程序是操作系统的一个底层模块,运行于管态,说明在T1到T2时刻之间,处理机状态曾有木态转换到管态。由于中断是系统由目态转换为管态的必要条件,所以在时刻T1与时刻T2之间一定发生过中断。也就是说,中断是进程切换的必要条件,然而,中断不是进程切换的充分条件。 比如说,一个进程执行一个系统调用命令将一个消息发送给另外一个进程,该命令的执行将通过中断进入操作系统,操作系统处理完消息发送的工作后可能返回原调用进程,此时中断并未导致进程切换;也可 阅读全文
posted @ 2012-11-25 00:02 简单地快乐 阅读(1993) 评论(0) 推荐(0)