1.递归打印数组和链表?
- 平常我们打印数组和链表都是 迭代 就好了
- 今天学到一个新思路–>不仅可以轻松正着打印数组和链表 , 还能轻松倒着打印(用的是二叉树的前中后序遍历的思想)
代码实现
public class Main{
public static void main(String[] args) {
int[] arr = {1,3,4,5,6};
traverse(arr, 0);
}
// 核心代码
public static void traverse(int[] arr,int i) {
if(i == arr.length) return;
System.out.println(arr[i]); //前序位置
traverse(arr, i+1);
System.out.println("dao"+arr[i]); //后序位置
}
}
- output :
原理讲解
- 退出 递归traverse()时, 是退出本层,返回到上一层traverse()---->也就是返回到 第12行 , 而不是第8行
二叉树的 前 中 后 序位置
二叉树的
前序位置 : 就是即将要进入到一个节点的时间点
中序位置 : 就是从左子树切换到右子树的时间点
后序位置 : 就是即将要从一个节点出去的那个时间点