什么是递归(前序遍历)

首先来看一下前序遍历的代码,遍历用到了递归,递归理解了,遍历的代码也就迎刃而解了。

/**
* 二叉树的前序遍历
* @param node  二叉树节点
*/
public static void preOrderTraveral(TreeNode node) {
	if(node == null) {
		return;
	}
	System.out.println(node.data);			//S
	preOrderTraveral(node.leftChild);		//L
	preOrderTraveral(node.rightChild);		//R
}

传入一个node,先输出,然后在对其左孩子进行递归调用preOrderTraveral()方法,在其左孩子这一层又是先输出,然后接着递归调用preOrderTraveral()方法,这样一层一层的嵌套下去,然后执行完了还要一层一层的返回,让人觉得很蒙,在脑海中想个两三层就乱了,很难把整个过程理清楚。
在这里插入图片描述
有可能还会越想越绕,最终一知半解放到那里先不管了。过了许久再次翻到这个知识点时感觉有些理解但不是那么透彻,然后再次尝试着想一下,但是好像还是不那么的明白。反正笔者就是这么一个状态,不过我再次遇到这个知识点的时候,一个做法改变了这样的状态----那就是尝试动手写一下流程。

为了简便,我们用S,L,R分别代表上面方法里面的3条语句,从上到下以依次为执行顺序。这样,输出顺序为–1,2,4,5,3,6是不是就一步了然了呢。这个图也不是特别难画,但是从来都是一直在脑海中想,而没有动手画过,当这个图画出来的时候,顿时感觉清爽了好多,就像一块好的Amoled屏幕的那种通透感一样。
在这里插入图片描述
同时也把具体的图示给出来,方便大家对照理解
在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值