二叉树-递归

代码随想录-刷题笔记

该章作为递归基础,记录递归模板

内容:

从前中后序遍历来引入递归

最开始学数据结构的时候,前中后序遍历真的是噩梦!

对于递归不能说一窍不通也可以说是啥也不会。

但后来发现递归完全就是一个的模拟 ,每次递归都是一层压栈,然后return相当于是出栈

理解这一层会轻松的写出前序遍历的代码

中序,后序,只需要吧 注释中 "中"的部分放到traversal 中间和后面即可.

void traversal(TreeNode root) {
    if(root == null) return;
    list.add(root.val); //中
    traversal(root.left); //左
    treversal(root.right); //右
}

 由此观察,我们发现 递归 要包含 三个方面 

递归函数 - 包括返回值 ,参数

终止条件 - 否则会无限循环

逻辑代码 - 终止条件之下的代码.

由此,递归模板得出

type funcName (parament) {
    if(xxx) return;
    xxx;
}

按照以上三方面可以解决一切递归问题。

之后还有回溯,回溯其实只是递归的一种延伸,等到刷那章再说吧

总结:

递归可以延伸的点很多, 包括动态规划,回溯等等, 各方面。

我个人觉得算法应该就分为 动态规划,分之,贪心,多指针这几方面,如果认识不全面之后也会在后文更正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值