三张图简单理解回溯算法

做完简单题LeetCode-剑指offer-06-从头到尾打印链表,画图写博客总结的时候,发现尾递归的操作,如果刚好和正向调用的操作相反的话,其实就是一个简单的回溯过程了。在此记录一下,方便后续思路的延伸~

本博客内容也写在lc题解上了:简单理解递归操作 | 顺带理解一下回溯过程~

本人偶尔也会会写写题解的OvO,哈哈哈~

正向过程:如果执行操作在递归之前,则在每个正向调用的过程中都执行一遍。

list.add(head.val); // 操作
recur(head.next);  // 递归调用

剑指offer-06-从头打印链表01

剑指offer-06-从头打印链表01回调过程:但是,如果执行操作在递归之后,就会在最终的递归出口处开始,继续执行没有执行完的操作!有那味道没!哈哈哈

recur(head.next);  // 递归调用
list.add(head.val); // 操作

在这里插入图片描述

那回溯是什么呢?

就是在回调过程中,把之前正向调用的操作给撤销了。这样子就可以恢复到那个节点上的初始状态,还原现场。

list.add(head.val); // 操作
recur(head.next);  // 递归调用
list.remove(list.size() - 1); // 撤销操作

剑指offer-06-从头打印链表03

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuanbaoQiang

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值