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

评论:
# re: 二叉树遍历推导的一点思考 2010-11-13 09:10 | 雪洁
不错 顶顶~~ 以后常来学习。。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理