以下为我的天梯积分规则:
每日至少一题:一题积分+10分
若多做了一题(或多一种方法解答),则当日积分+20分(+10+10)
若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60)
初始分为100分
若差一天没做题,则扣积分-10分(周六、周日除外注:休息)
坚持!!!
初级算法
刷题目录
链表
题干
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
递归
首先应该想到的应该是下图吧(借用大佬搞笑图)。
哈哈哈,Just Kidding。
分析:
用递归的话,我们首先设置出口,当root节点为0时,则退出。
class Solution: def maxDepth(self, root: TreeNode) -> int: # 设置出口 if root == None: return 0 # 左边的深度 left_dp = self.maxDepth(root.left) # 右边的深度 right_dp = self.maxDepth(root.right) # 当前节点的最大深度为左右子节点最大深度+1 return max(left_dp, right_dp) + 1
递归速度还是很快的嘛,多多理解一下。
深度优先搜索
分析:
就是我们一层一层的进行搜索,统计一下总共有多少层。
class Solution: def maxDepth(self, root: TreeNode) -> int: if root == None: return 0 else: left_height = self.maxDepth(root.left) right_height = self.maxDepth(root.right) return max(left_height, right_height)+1