摘要: 要求:输入一棵二叉排序树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的结点,只能调整树中结点的指针的指向。 方法一:我们借助一个容器来顺序存储结点的指针,然后改变指针的指向。 方法二:我们边遍历边改变指针的指向。 阅读全文
posted @ 2014-05-07 22:36 月轩 阅读(1116) 评论(0) 推荐(0) 编辑
摘要: 流操作符、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、递归函数的形参都推荐使用引用。 阅读全文
posted @ 2014-05-07 20:15 月轩 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 实现要点: 1.组合模式采用树形结构来实现普遍存在的对象容器,从而将“一对多”的关系转化“一对一”的关系,使得客户代码可以一致地处理对象和对象容器,无需关心处理的是单个的对象,还是组合的对象容器。 2.将“客户代码与复杂的对象容器结构”解耦是组合模式的核心思想,解耦之后,客户代码将与纯粹的抽象接口——而非对象容器的复内部实现结构——发生依赖关系,从而更能“应对变化”。 3.组合模式中,是将“Add和Remove等和对象容器相关的方法”定义在“表示抽象对象的Component类”中,还是将其定义在“表示对象容器的Composite类”中,是一个关乎“透明性”和“安全性”的两难问题,需要仔细权衡。这里有可能违背面向对象的“单一职责原则”,但是对于这种特殊结构,这又是必须付出的代价。 4.组合模式在具体实现中,可以让父对象中的子对象反向追溯;如果父对象有频繁的遍历需求,可使用缓存技巧来改善效率。 5. 客户端尽量不要直接调用树叶类的方法,而是借助其父类(Component)的多态性完成调用,这样可以增加代码的复用性。 使用场景: 以下情况下适用组合模式: 1.你想表示对象 阅读全文
posted @ 2014-05-07 16:21 月轩 阅读(159) 评论(0) 推荐(0) 编辑