从刚开始接触递归,到接触二叉树递归遍历,简单几行代码就能实现前中后序遍历,而且,前中后序遍历的代码基本一致,觉得好神奇
节点递归顺序分析
代码是遍历二叉树时常用的递归代码,在1位置raverse函数返回值head节点,在2位置raverse函数返回值左孩子节点,在3位置traverse函数返回值为右孩子节点
public static void traverse(Node head){
if(head == null)
return ;
// 1 先序
traverse(head.left);
// 2 中序
traverse(head.left);
//3 后续
}
-
以先序为例子*
看图
递归过程
根据递归过程,可以发现,二叉树的每个节点会到达三次 ,根据图中,访问顺序为 12444255521...
因此在第一次到达节点进行处理就是二叉树的先序遍历,第二次到达进行处理就是中序遍历,第三次到达进行处理就是后序遍历。
递归序的作用
根据图中的访问顺序可以发现,节点可以收集左右节点的信息,即问题可以得到子问题的信息,是利用树做动态规划的基础!!!
网友评论