线索二叉树

  • 我们将已经定义好的结构进行“扩容”
    数据结构和算法(线索二叉树)
    ltag为0时指向该结点的左孩子,为1时指向该结点的前驱。
    rtag为0时指向该结点的右孩子,为1时指向该结点的后继。
  • 线索二叉树结构如图:数据结构和算法(线索二叉树)

树到二叉树的转换

  • 树转换成相应的二叉树分两个步骤:
    1 在树中所有的兄弟结点之间加一连线
    2 对每个结点,除了保留与其长子的连线外,去掉该结点与其他孩子的连线
    数据结构和算法(线索二叉树)数据结构和算法(线索二叉树)数据结构和算法(线索二叉树)

森林到二叉树的转化

  • 森林转换为二叉树分两个步骤:
    1 先将森林中的每棵树变为二叉树
    2 再将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树

数据结构和算法(线索二叉树)
数据结构和算法(线索二叉树)
数据结构和算法(线索二叉树)

二叉树到树、森林的转换

数据结构和算法(线索二叉树)
数据结构和算法(线索二叉树)
数据结构和算法(线索二叉树)

树与森林的遍历

  • 树的遍历分为两种方式:一种是先根遍历,另种是后根遍历。
    先根遍历:先访问树的根结点,然后再依次先根遍历根的每棵子树。
    后根遍历:先依次遍历每棵子树,然后再访问根结点。
  • 数据结构和算法(线索二叉树)
    先根遍历结果: ABEFCGDHIJ 后根遍历结果: EFBGCHIJDA
  • 森林的遍历也分为前序遍历和后序遍历,其实就是按照树的先根遍历和后根遍历依次访问森林的每一棵树。
  • 我们的惊人发现:树、森林的前根(序)遍历和二又树的前序遍历结果相同,树、森林的后根(序)遍历和二叉树的中序遍历结果相同!

相关文章: