力扣(2024.08.06)
1. 144:二叉树的前序遍历
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:def dfs(node, res):if not node:returnres.append(node.val)dfs(node.left, res)dfs(node.right, res)res = []dfs(root, res)return res
2. 94:二叉树的中序遍历
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:def dfs(node, res):if not node:returndfs(node.left, res)res.append(node.val)dfs(node.right, res)res = []dfs(root, res)return res
3. 145:二叉树的后序遍历
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:def dfs(node, res):if not node:returndfs(node.left, res)dfs(node.right, res)res.append(node.val)res = []dfs(root, res)return res
4. 102:二叉树的层序遍历
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:def dfs(node, level, res):if not node:returnif len(res) == level:res.append([])res[level].append(node.val)dfs(node.left, level + 1, res)dfs(node.right, level + 1, res)res = []level = 0dfs(root, level, res)return res
5. 107:二叉树的层序遍历2
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:def dfs(node, level, res):if not node:returnif len(res) == level:res.append([])res[level].append(node.val)dfs(node.left, level + 1, res)dfs(node.right, level + 1, res)res = []level = 0dfs(root, level, res)return res[::-1]
6. 199:二叉树的右视图
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def rightSideView(self, root: Optional[TreeNode]) -> List[int]:def dfs(node, level, res):if not node:returnif len(res) == level:res.append([])res[level].append(node.val)dfs(node.left, level + 1, res)dfs(node.right, level + 1, res)res = []level = 0dfs(root, level, res)final_res = []for i in res:final_res.append(i[-1])return final_res