码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树遍历

时间:2018-08-15 22:43:22      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:左移   逆向   不同   如何   nbsp   先序   遍历   第一个   移位   

一、二叉树遍历可以有三种遍历方法:

1、先序遍历

  先根节点再左子树再右子树

  第一个节点一定是根节点

  方法:先序遍历的就先把根节点写出来,然后再看左子树,如果左子树还有分支节点,再把左子树整体看成是一个只有三个节点的简化版的二叉树,然后再把根节点写出来,依次类推,写出根节点。左子树写完 后,然后再看右子树,用同样的方式先简化成三个节点,然后写出根节点。

2、中序遍历

  先左子树再根节点再右子树

  方法;先找到最高层的根节点,然后写出来,然后把整体看成只有三个节点的简化版二叉树,先找到左子树,如果还有分支节点,然后再看成一个简化的二叉树,然后找到左子树,最终找到没有分支的左子树,把节点写到根节点的左边(最后这个节点离根节点最远,以每次写都要放到根节点旁边,其他的往左移位),然后再把这个节点的根节点写出来,然后再写右子树,然后再看上一层的简化版二叉树,再从左子树开始遍历,依次类推,倒着把节点写出来,最后到最高层的根节点。然后再看右子树,重复左子树的方法进行遍历,不过这次是在根节点右边依次按顺序写。

3、后序遍历

  先左子树再右子树再根节点

  最后一个节点一定是根节点

  方法:先找到最高层的根节点,写到最后一位,然后把整个二叉树看成是一个简化的三节点二叉树,先找出左子树,如果左子树还有分支节点,就再把左子树简化成一个三节点的二叉树,找出左子树,依次类推,最终到没有分支的节点的二叉树,写出这个节点,然后再看这个节点的根节点和右子树,先写右子树的节点,再写根节点,然后再往上一层遍历,这样逆向到第一层的根节点时,再看右子树,然后按照同样的方法写出节点,最后的才写最高层的根节点,所以根节点在最后一位。

4、分析规律;

  三种遍历方法都遵循同一种规律,只是遍历方式不同。第一次遍历,先找到最高层的根节点,然后每一次都把二叉树看成是一个只有三个节点的简化版二叉树,如果不够三个节点,就虚拟的看成三个节点,然后根据遍历方式遍历。

二、给出两种遍历,如何推算出二叉树

1、给出先序遍历和中序遍历

  根据先序遍历确定根节点,然后再根据中序遍历确定左子树和右子树。

 

2、给出后序遍历和中序遍历

  根据后续遍历确定根节点,然后根据中序遍历确定左子树和右子树。

二叉树遍历

标签:左移   逆向   不同   如何   nbsp   先序   遍历   第一个   移位   

原文地址:https://www.cnblogs.com/thoughtful-actors/p/9484099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!