中午,写了一个数据结构的习题:已知前序遍历和中序遍历求该二叉树的后序遍历。总的来说,引出关于递归设计以及二叉树结构上的一些性质的思考。
先说递归的设计,如果说程序设计是数学思想的代码实现(当然,代码有独有的艺术性),那么递归的函数参数的设计则是体现数学思想的关键之一(例如迭代器参数可以清晰体现递归的方法的作用域,并且也可以将递归入口的特殊性和中间过程的调用一体化)。
再说为什么只能由前序(后序),中序推导出后序(前序),而不能由前后序推中序。先看一个简单例子:
上图二叉树与其对折之后对应相同的前序与后序,而中序遍历的结果与二叉树是一一对应的,所以两者对应不同的中序遍历,故前后序无法确定中序。但是更一般化的理由在于,前序,中序,后序都能表述树中的层次关系(或者同一层的左右关系),但是中序以其在顺序上的特殊性,还能蕴含树中不同层次的左右关系,而这对唯一确定一棵树来说是必要条件。
posted on 2010-11-11 14:56
yenchieh 阅读(2263)
评论(1) 编辑 收藏 引用 所属分类:
Datastructure and Algorithm