● 104.二叉树的最大深度
题目链接:104. 二叉树的最大深度 - 力扣(LeetCode)
思路:左遍历右遍历后用max函数选出最大值即可
代码
class Solution:
def maxDepth(self, root: TreeNode) -> int:
return self.getdepth(root)
def getdepth(self, node):
if not node:
return 0
leftheight = self.getdepth(node.left) #左
rightheight = self.getdepth(node.right) #右
height = 1 + max(leftheight, rightheight) #中
return height
● 111.二叉树的最小深度
题目链接:111. 二叉树的最小深度 - 力扣(LeetCode)
思路:需要注意的是如果左子树是空的 那么这个就不算路径 也就是说我们需要判断左右子树是不是空的 如果有一个为空则计算另一个子树的长度即可 如果不为空就需要两者用min取最小值 并且需要在return的时候+1 因为root没有被计算进去
代码
class Solution:
def minDepth(self, root: Optional[TreeNode]) -> int:
if root is None:
return 0
if root.left is None and root.right is not None:
return 1 + self.minDepth(root.right)
if root.left is not None and root.right is None:
return 1 + self.minDepth(root.left)
return 1 + min(self.minDepth(root.left), self.minDepth(root.right))
● 222.完全二叉树的节点个数
题目链接:222. 完全二叉树的节点个数 - 力扣(LeetCode)
思路:左右两边都遍历加起来最后加1即可
代码
class Solution:
def countNodes(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
return 1 + self.countNodes(root.left) + self.countNodes(root.right)