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:
return
res.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:
return
dfs(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:
return
dfs(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:
return
if len(res) == level:
res.append([])
res[level].append(node.val)
dfs(node.left, level + 1, res)
dfs(node.right, level + 1, res)
res = []
level = 0
dfs(root, level, res)
return res
# 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:
return
if len(res) == level:
res.append([])
res[level].append(node.val)
dfs(node.left, level + 1, res)
dfs(node.right, level + 1, res)
res = []
level = 0
dfs(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:
return
if len(res) == level:
res.append([])
res[level].append(node.val)
dfs(node.left, level + 1, res)
dfs(node.right, level + 1, res)
res = []
level = 0
dfs(root, level, res)
final_res = []
for i in res:
final_res.append(i[-1])
return final_res