二叉树的前中后序讲解

正文

  也是认识的一个小哥们最近面试题中给出的一个二叉树前中后序的题。面试

  记得当初本身已经很明白这个前中后序的过程,而后今天却算了好了很久经过查询相关知识,只能对着结果本身一遍一遍的算,不停的写那个结果最后仍是搞明白了,此次要把过程 给记录下来。算法

  二叉树的前序(1-2-3-4-5-6-7-8-9),中序(2-3-1-6-7-8-5-9-4)而后求后序?spa

  再讲题前,我先给出这些概念的详细讲解,用图来分析:blog

  

  图是我本身花的,也是照着《算法导论》第12章,二叉搜索树 -286页花的,如下的前中后序讲解都是说的这个图。二叉树

  前序的过程是:根节点->左子树->右子树;其实这个你们一看都知道,何须我说呢。确实如此,我看书也能看明白,不是就根左右嘛,若是我再细一点我想你们会更容易理解。这就是我要写的必要。这种遍历,第一个是根节点,什么是根节点就是否是叶子节点,也就是左右都有或左有或右有。而后遍历第一个根节点就是 6 咱们按照最上面的根节点遍历前序,这是理解的要点。那么往下走,5也是根节点好了5下面的2 和 5是叶子了,那么就要按照先左后的方式走了。那么如今已经走了到 6 5 2 5,先左后右,先上后下。而后看右边。7 好这个是根根节点,往下 8 不是根也就是直接读取了。那么最后是什么? 6 5 2 5 7 8 ,前序说完了,不知道你是否明白了呢?搜索

  中序的过程是:左子树->根节点->右子树;那么这点就要不一样于前序了,这个规则是要按照开始的,必定要强调。往左找,往下找,找到第一个。而后咱们找到了 2,ok,2是叶子节点因此没了,网上找 而后是 5 ,咱们这里要注意了,在遍历的过程当中咱们都是按照一个单元一个单元的去完成的,这个单元是我给起的名字的。什么是一个单元,就是一套左根右。因此到了这里,你走到 2 往上是根 5 ,还须要把 右边的 5 完成后,才能接着往上在找。因此左半边的结果就是 2 5 5 6 。找完左边,找右边。7 是根那么就接着往下找,一个就是一个 右叶子 8 ,ok,那么左叶子没有了,而中序的第二位是根,那么就有了 7 在 8 前面。好啦,最后的中序结果就是 2 5 5 6 7 8 。准备好了后序了吗?我想你已经很明白了。遍历

  后序的过程是:左子树->右子树->根节点;也就是把最上面的根节点放到最后就对了,这个跟中序很像。咱们仍是找左,依旧是 2 ,而后呢考虑到顺序,单元的第二位就是 右边叶子节点的 5 了,因此是 2 5(叶子的) 5 (根) ,完成一个单元,往上走到6,一看是根那,咱们顺序应该是左右根,因此不是它。找右边,7 是根,接着往下找,找到 8 ,ok由于没有了左叶子,第二位是右叶子那么就是 8 了,往上是 7 再到最后的 6 。The result is 2 5 5 8 7 6im

   ok,已经叙述完毕,不知道是否说的明白。欢迎你们一块儿讨论,交流。那么刚开始的题呢?我想你们能够算出来了。查询

相关文章
相关标签/搜索