代码随想录算法训练营第17天
104. 二叉树的最大深度
class Solution:def maxDepth(self, root: Optional[TreeNode]) -> int:if not root:return 0left = self.maxDepth(root.left)right = self.maxDepth(root.right)return 1+ max(left,right)
111. 二叉树的最小深度
class Solution:def maxDepth(self, root: Optional[TreeNode]) -> int:if not root:return 0left = self.maxDepth(root.left)right = self.maxDepth(root.right)return 1+ max(left,right)
222. 完全二叉树的节点个数
class Solution:def countNodes(self, root: Optional[TreeNode]) -> int:if not root:return 0left = self.countNodes(root.left)right = self.countNodes(root.right)return 1 +left + right
110. 平衡二叉树
class Solution:def countNodes(self, root: Optional[TreeNode]) -> int:if not root:return 0left = self.countNodes(root.left)right = self.countNodes(root.right)return 1 +left + right
257. 二叉树的所有路径
class Solution:def __init__(self):self.path = []self.result = []def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:if not root:return def dfs(root):self.path.append(str(root.val))if not root.left and not root.right:self.result.append('->'.join(self.path[:]))if root.left:dfs(root.left)self.path = self.path[:-1]if root.right:dfs(root.right)self.path = self.path[:-1]dfs(root)return self.result
404. 左叶子之和
class Solution:def __init__(self):self.path = []self.result = []def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:if not root:return def dfs(root):self.path.append(str(root.val))if not root.left and not root.right:self.result.append('->'.join(self.path[:]))if root.left:dfs(root.left)self.path = self.path[:-1]if root.right:dfs(root.right)self.path = self.path[:-1]dfs(root)return self.result