第六章二叉树part03
今日内容:104.二叉树的最大深度 (优先掌握递归)、111.二叉树的最小深度 (优先掌握递归)、222.完全二叉树的节点个数(优先掌握递归)
代码随想录:代码随想录
我宣布今天是刷题以来最简单的一次,五分钟一道题,嘿嘿嘿。
做递归牢牢记住递归三部曲。唯一不同的是在算深度这种计数的情况下,return的值为1+后续的值。
小偷个懒、直接方代码。
104.二叉树的最大深度 (优先掌握递归)
题意:给定一个二叉树 root
,返回其最大深度。
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
if root == None:
return 0
left = self.maxDepth(root.left)
right = self.maxDepth(root.right)
if left >= right:
depth = left
else:
depth = right
return 1 + depth
111.二叉树的最小深度 (优先掌握递归)
题意:给定一个二叉树,找出其最小深度。
class Solution:
def minDepth(self, root: Optional[TreeNode]) -> int:
if root == None:
return 0
left = self.minDepth(root.left)
right = self.minDepth(root.right)
if (left and right) and left < right:
depth = left
elif (left and right) and left >= right:
depth = right
elif left == 0 or right == 0:
depth = left + right
return 1 + depth
222.完全二叉树的节点个数(优先掌握递归)
题意:给你一棵 完全二叉树 的根节点 root
,求出该树的节点个数。
class Solution:
def countNodes(self, root: Optional[TreeNode]) -> int:
if root == None:
return 0
left = self.countNodes(root.left)
right = self.countNodes(root.right)
return 1 + left + right