一些好玩的东西

本文介绍了使用递归实现数组和链表的前序和后序遍历,展示了如何利用二叉树的前中后序位置概念。同时,讨论了如何通过`a.length`和`a[0].length`获取二维数组的行数和列数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归

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);
	}
}

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值