BLOG
Enjoy when you can, and endure when you must.
AUG 14, 2016/数据结构
二叉树的遍历与重建

本文回味一个非常基础的数据结构——二叉树,包括其基本的遍历方法,即前序、中序和后序遍历。然后回归代码,来看一看在 Python 可以如何以一个很简单的方式表达二叉树并用迭代器的方式实现这三种遍历。最后实现一个如何根据一个二叉树的前序和中序遍历来反向重建二叉树的方法。

MAR 31, 2016/数据结构
图的基础遍历:深度优先和广度优先

图结构是算法学中最强大的框架之一。图的遍历则是一个重要的论题。深度优先算法和广度优先算法作为最基础的图遍历算法应当牢记在心。

MAR 24, 2016/数据结构
跳跃表(Skip Lists)

跳跃表(Skip Lists)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且在实现上比平衡树要更为简单,因而得到了广泛的应用。本文主要来关注一下跳跃表的特征与基本的实现原理。

AUG 24, 2015/数据结构
快速排序

算法可是一门必修课程,值得去多多研究和体会。本文针对快速排序做一个小小的归纳和实践。也算是简单的学习笔记。

AUG 21, 2015/数据结构
堆排序

算法可是一门必修课程,值得去多多研究和体会。本文针对堆排序做一个小小的归纳和实践。也算是简单的学习笔记。

APR 27, 2014/数据结构
后缀表达式求值
对一个后缀表达式进行求值需要用到堆栈,它用于存放操作数并在计算时将其弹出。假设我们将一个正确的后缀表达式存放在一个字符串中,计算时,只需从左到右依次扫描该字符串并遵循以下步骤进行: 1. 如果当前元素是一个操作数,则将其值推入堆栈; 2. 如果当前元素是一个运算符: a)将栈顶的头两个元素弹出; b)将这两个元素与当前运算符做数学运算(注意弹出的第一个元素为右操作数,而第二个元素为左操作数); c)将结果推入堆栈。 A B C + * D / 这里我们以这个后缀表达式为例演示求值过程。假设A、B、C、D的值分别如下: A = 8 ...
APR 27, 2014/数据结构
后缀表达式
数学表达式的计算是我们日常工作的一部分,对于我们来说也相对比较容易。不过如果是计算机呢?可能就不那么简单了。为了让计算机知道计算规则,我们需要对我们通常所使用的所谓中缀表达式进行一下转换,而其中一种转换方法就是后缀表达式。 概念 后缀表达式,即逆波兰式。这种表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。其优点是根据运算对象和算符的出现次序进行计算,不需要使用括号,也便于用机械实现求值。 中缀到后缀的转换 1. 按正确的运算顺序给每组运算两侧加上圆括号; 2. 在每一组圆括号中,将运...
1