144.二叉树的前序遍历
中 左 右
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
def dfs(node): #确定递归函数的参数和返回值
if node is None: #确定终止条件
return
#确定单层递归的逻辑
res.append(node.val)
dfs(node.left)
dfs(node.right)
dfs(root)
return res94.二叉树的中序遍历
左 中 右
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
def dfs(node):
if node is None:
return
dfs(node.left)
res.append(node.val)
dfs(node.right)
dfs(root)
return res145.二叉树的后序遍历
左 右 中
class Solution:
def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
def dfs(node):
if node is None:
return
dfs(node.left)
dfs(node.right)
res.append(node.val)
dfs(root)
return res