【数据结构】二叉树的遍历

88 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情 >>

二叉树主要有三种遍历的方式

本文将使用如下树进行讲解学习

image.png

先序遍历

采用先序遍历二叉树的思路为:

  • 找到二叉树的根节点(76)
  • 访问76节点的左子树(65)
  • 访问65节点的左子树(23)
  • 访问23节点的左子树(11)
  • 访问11节点发现没有左子树 只有右子树则为22
  • 22没有左右子树,此子树遍历完毕
  • 返回23遍历右子树37
  • 按照上述思路依次访问得:37,32,59,52
  • 当23这颗子树访问完毕返回65子树发现无右节点
  • 访问96子树
  • 按照上述思路

最终先序遍历结果为: 76,65,23,11,22,37,32,59,52,96,77,84,90,86

中序遍历

采用中序遍历二叉树思路为:

  • 先寻找左子树 发现最下层11无左子树则第一位是11
  • 跟随左根右逻辑,遍历完左子树后查询根节点再遍历右子树,从上到下
  • 当23的左子树遍历完成后,返回23进行遍历右子树
  • 右子树找到最下层的左子树进行遍历,从32开始
  • 遍历完左子树后进行遍历右子树从根部52开始
  • 以此类推,当遍历完65节点后返回96节点进行遍历
  • 96的左子树为77
  • 77寻找左子树发现没有 进行寻找右子树,寻找到底部为86
  • 按照上述流程进行依次遍历即遍历完成 最终中序遍历结果为:11,22,23,32,37,52,59,65,76,77,86,90,84,96

后序遍历

采用后序遍历二叉树思路为:

  • 后序遍历遵循左右根的原则,即先左后右再根
  • 从下往上发现11无左节点,仅有右节点22
  • 11子树遍历完成后遍历23子树的右子树
  • 先遍历37子树的左节点即32后遍历右子树即52,59(需要从根部向上遍历) 最终后序遍历结果为:22,11,32,52,59,37,23,65,86,90,84,77,96,76