上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 27 下一页
摘要: 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法。给出算法容易,证明算法的正确性就不容易了。本文就通过自动化测试的方式证明给出的遍历算法是完全正确的。458329个测试用例是深度为1到5的所有的树结构的形态,所以我才胆敢说是"全面"测试。 阅读全文
posted @ 2014-07-22 12:08 BIT祝威 阅读(2792) 评论(1) 推荐(3)
摘要: 本文用先序、中序、后序、层次遍历4种方式实现了对线索二叉树的线索化,然后分别用上述4种方式实现了线索化的遍历。二叉树中容易找到结点的左右孩子信息,但该结点在某一序列中的直接前驱和直接后继只能在某种遍历过程中动态获得。先依遍历规则把每个结点某一序列中对应的前驱和后继线索预存起来,这叫做"线索化"。意义:从任一结点出发都能快速找到其某一序列中前驱和后继,且不必借助堆栈。这就是线索二叉树(Threaded Binary Tree) 阅读全文
posted @ 2014-07-19 00:20 BIT祝威 阅读(4015) 评论(1) 推荐(2)
摘要: 本文中非递归遍历二叉树的思想和代码都来自这里(http://jianshu.io/p/49c8cfd07410#)。我认为其思想和代码都足够优雅动人了,于是稍作整理,得到如下的程序。以上三种遍历实现代码行数一模一样,如同递归遍历一样,只有三行核心代码的先后顺序有区别。用原作者的话解释就是:"得以统一三种更简单的非递归遍历方法的基本思想:有重合元素的局部有序一定能导致整体有序。基于这种思想,我就构思三种非递归遍历的统一思想:不管是前序,中序,后序,只要我能保证对每个结点而言,该结点,其左子结点,其右子结点都满足以前序/中序/后序的访问顺序,整个二叉树的这种三结点局部有序一定能保证整体以前序/中序/后序访问,因为相邻的局部必有重合的结点,即一个局部的"根"结点是另外一个局部的"子"结点。"。 阅读全文
posted @ 2014-07-17 13:19 BIT祝威 阅读(1576) 评论(1) 推荐(0)
摘要: 现在到了重拾基础算法,掌握算法思维的时候。暂定要学习的算法如下表。我的计划是,按照上表的顺序,依次理解各个算法的实现思路,然后用C#实现,然后反思其精华。这一过程中逐步得到一个基础算法库(做成DLL)。 阅读全文
posted @ 2014-07-17 11:23 BIT祝威 阅读(682) 评论(0) 推荐(0)
摘要: BIT祝威博客汇总(Blog Index) 目测我已经写了好几十篇博文,再这样下去就不好找了。因此将此汇总帖置顶,并即时更新,以方便查找(Ctrl+F即可)。 带有“推荐”是我觉得可以见人的,推荐大家(也包括我)没事看看,温故知新。 阅读全文
posted @ 2014-07-13 08:40 BIT祝威 阅读(11826) 评论(8) 推荐(7)
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 27 下一页