- 树的周游
深度优先(DFS)
- 先根次序
若树非空,则遍历方法为:
①访问根结点。
②从左到右, 依次先根次序遍历根结点的每一棵子树。
访问次序:ABECFHGD
注意:等同于转换的二叉树进行先序周游。
- 后根次序
若树非空,则遍历方法为:
①从左到右, 依次后根遍历根结点的每一棵子树。
②访问根结点。
访问次序:EBHFGCDA
注意:等同于转换的二叉树进行中序周游,而不是后序周游。
广度优先(BFS又叫层次周游)
逐层访问各个节点,访问次序:ABCDEFGH
- 森林的周游
深度优先
- 先根次序
若森林非空,则遍历方法为:
①访问森林中第一棵树的根结点。
②先根次序周游第一棵树的根结点的子树森林。
③先根次序周游其他的树。
访问次序:ABCDEFGHIJ
注意:等同于转换的二叉树进行先序遍历。
- 后根次序
若森林非空,则遍历方法为:
①后根次序周游森林中第一棵树的根结点的子树森林。
②访问第一棵树的根结点。
③后根次序周游其他的树。
访问次序:BCDAFEHJIG
注意:等同于转换的二叉树进行中序遍历,而不是后序遍历。
广度优先
层次周游序列为:AEGBCDFHIJ
- 由周游序列确定二叉树,树,森林
给定先序、中序周游序列可唯一确定二叉树。
给定后序、中序周游序列可唯一确定二叉树。
只要给定了中序周游序列和一个其他深度优先周游序列就可以唯一确定一个二叉树。而二叉树到树,森林的转换是唯一的,所以得到一棵树,或者森林的先根次序周游序列和后根次序周游序列后,就可以唯一确定这棵树或者森林了。(先根次序周游序列相当于转换后的二叉树的先序周游序列,后根次序周游序列,相当于转化后的二叉树的中序周游序列,由此可以唯一确定这颗由树或者森林转化后的二叉树,所以可以画出这棵二叉树,再将这颗二叉树转化为树或者森林。)
例如:某二叉树,已知先序序列为AB D G C E F,中序序列为D G B A E C F,求这棵二叉树转化后的树或者森林。
由此可以确定这棵二叉树为:
它转化为树或森林为:
转化之后任然是一颗二叉树(例子没有选好,汗~)
右边的二叉树的后跟次序是:DG B A E C F,同时也是左边这棵二叉树的中序周游序列;
右边的二叉树的先跟次序是:AB D G C E F,同时也是左边这棵二叉树的先序周游序列。