递归
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行
二叉树的 前 中 后 序位置
二叉树的
前序位置 : 就是即将要进入到一个节点的时间点
中序位置 : 就是从左子树切换到右子树的时间点
后序位置 : 就是即将要从一个节点出去的那个时间点
数组的行数和列数还能这么获取—a.length 和 a[0].length
因为二维数组本就是由m个一维数组组合而成的. 所以可以这么获取r和c
public class Main{
public static void main(String[] args) {
int[][] a = {{1,1},{1,2},{1,3},{1,4}};
int m = a.length; //a.length 返回的是二维数组a中包含的一维数组的数量,即行数
int n = a[0].length; //a[0].length 返回的是第一个一维数组(索引为0)的长度,即列数
System.out.println(m);
System.out.println(n);
}
}