一、二叉树的前中后序递归遍历
'''
二叉树的前序遍历
'''
#定义二叉树类,底层逻辑为链表
class TreeNode:
def __int__(self, val = 0, left = None, right = None):
self.val = val
self.left = left
self.right = right
class Solution1:
def preorderTraversal2(self, root: TreeNode)-> list[int]:
# 定义一个列表用来存放结果,因为要将所有节点内的数值存入,所以需要定义在内层函数之外
res = []
def dfs(root):
# 可以调用上一级定义的res
nonlocal res
# 如果root为空,直接返回空列表
if not root:
return []
# 第一步结果列表append结点加入val(中)
res.append(root.val)
# 第二步左节点递归
dfs(root.left)
# 第三步右节点递归
dfs(root.right)
dfs(root)
return res
def inorderTraversal(self, root: TreeNode)-> list[int]:
# 定义一个列表用来存放结果,因为要将所有节点内的数值存入,所以需要定义在内层函数之外
res = []
def dfs(root):
# 可以调用上一级定义的res
nonlocal res
# 如果root为空,直接返回空列表
if not root:
return []
# 第一步左节点递归
dfs(root.left)
# 第二步结果列表append结点加入val(中)
res.append(root.val)
# 第三步右节点递归
dfs(root.right)
dfs(root)
return res
def postorderTraversal(self, root: TreeNode) -> list[int]:
# 定义一个列表用来存放结果,因为要将所有节点内的数值存入,所以需要定义在内层函数之外
res = []
def dfs(root):
# 可以调用上一级定义的res
nonlocal res
# 如果root为空,直接返回空列表
if not root:
return []
# 第一步左节点递归
dfs(root.left)
# 第二步右节点递归
dfs(root.right)
# 第三步结果列表append结点加入val(中)
res.append(root.val)
dfs(root)
return res
二、二叉树的迭代遍历还没自己写出来,后续更新