上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 27 下一页
摘要: 求解最小生成树(Minimum Cost Spanning Tree,以下简写做MST)是图相关的算法中常见的一个,本篇介绍两种求解MST的算法:Prim和Kruskal,然后测试之。 阅读全文
posted @ 2014-08-01 05:22 BIT祝威 阅读(2830) 评论(4) 推荐(1) 编辑
摘要: 本篇继续上一篇的方式,给出图的深度优先和广度优先搜索算法,然后用33867个测试用例进行自动化测试,以证明算法的正确性。 阅读全文
posted @ 2014-07-28 09:18 BIT祝威 阅读(2762) 评论(12) 推荐(10) 编辑
摘要: 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法。给出算法容易,证明算法的正确性就不容易了。本文就通过自动化测试的方式证明给出的遍历算法是完全正确的。458329个测试用例是深度为1到5的所有的树结构的形态,所以我才胆敢说是"全面"测试。 阅读全文
posted @ 2014-07-22 12:08 BIT祝威 阅读(2721) 评论(1) 推荐(3) 编辑
摘要: 本文用先序、中序、后序、层次遍历4种方式实现了对线索二叉树的线索化,然后分别用上述4种方式实现了线索化的遍历。二叉树中容易找到结点的左右孩子信息,但该结点在某一序列中的直接前驱和直接后继只能在某种遍历过程中动态获得。先依遍历规则把每个结点某一序列中对应的前驱和后继线索预存起来,这叫做"线索化"。意义:从任一结点出发都能快速找到其某一序列中前驱和后继,且不必借助堆栈。这就是线索二叉树(Threaded Binary Tree) 阅读全文
posted @ 2014-07-19 00:20 BIT祝威 阅读(3958) 评论(1) 推荐(2) 编辑
摘要: 本文中非递归遍历二叉树的思想和代码都来自这里(http://jianshu.io/p/49c8cfd07410#)。我认为其思想和代码都足够优雅动人了,于是稍作整理,得到如下的程序。以上三种遍历实现代码行数一模一样,如同递归遍历一样,只有三行核心代码的先后顺序有区别。用原作者的话解释就是:"得以统一三种更简单的非递归遍历方法的基本思想:有重合元素的局部有序一定能导致整体有序。基于这种思想,我就构思三种非递归遍历的统一思想:不管是前序,中序,后序,只要我能保证对每个结点而言,该结点,其左子结点,其右子结点都满足以前序/中序/后序的访问顺序,整个二叉树的这种三结点局部有序一定能保证整体以前序/中序/后序访问,因为相邻的局部必有重合的结点,即一个局部的"根"结点是另外一个局部的"子"结点。"。 阅读全文
posted @ 2014-07-17 13:19 BIT祝威 阅读(1548) 评论(1) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 27 下一页