数据结构学习(一)

本文主要是引用三套题解决递归问题的回答,现在主要是将思路整理,以及收纳遇到的递归的题目,方便自己学习。

递归学习三步走

  1. 看终止条件(这边我做的时候以一个或者没有那种来算的)
  2. 看本级递归是需要什么
  3. 看本级递归的返回值,主要是看问题他需要什么,你尽量往答案上靠,有些时候直接就是答案要的有些需要你拐个弯才行

做递归的时候,一定不要往下走,这样会把自己套牢了,一层一层往下走,但是递归是自己调用自己,因此我们只需要关注一级递归的解决过程即可。千万不要纠结每一次递归下去的细节!

先以原博客的例题为先吧,下面我刷力扣的时候带着往博客中添加。

力扣 104 求二叉树的最大深度

  1. 初始条件就是如果该树不存在就返回0就好了,这是简单的做法,要看他的终止条件那就是到底了这个节点没有左右子树,那左右子树的深度就是0,返回就是左右子树深度0+1,
  2. 返回值确定了就是max(左子树深度,右子树深度)+1
  3. 深度是看某一个节点的,要看左子树节点的深度和右子树节点的深度,取大的+1,就是某一个节点的深度。所以这题一个阶段就是只有三个节点根、左、右。
  4. 代码:
def maxDepth(self,root):
	if root==None:
		return 0
	left_height=self.maxDepth(root.left)
	right_height=self.maxDepth(root.right)
	return max(left_height,right_height)+1

力扣24 两两交换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值