代码随想录第十二天刷题
二叉树章节
1.前序遍历
# 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]:
res = []
def dfs(node):
if node is None:
return
res.append(node.val)
dfs(node.left)
dfs(node.right)
dfs(root)
return res
# self.val = val
# self.left = left
# self.right = right
#“我这个节点:
# 值 = val
# 左孩子 = left
# 右孩子 = right”
# ---------- TreeNode 理解 ----------
# self = 当前这个节点对象
#
# self.val = val
# 把值存到对象里
#
# __init__ 是构造函数
# 递归发生在遍历函数(dfs)里
# ---------- 递归终止条件 ----------
# return(不带值)
# 含义:结束当前函数
#
# 在递归中:
# 更重要的是“停止”,不是返回值
#
# return == return None
# ---------- 前序遍历 ----------
# 顺序:根 → 左 → 右
#
# res.append(node.val) # 访问根
# dfs(node.left) # 遍历左子树
# dfs(node.right) # 遍历右子树
#
# 递归不是“跳来跳去”
# 而是函数调用函数
# ---------- 函数定义 vs 调用 ----------
# def f(x): # 定义函数
# ...
# f(10) # 调用函数
#
# 两者必须在同一缩进级别
# 定义 ≠ 执行
查看4道真题和解析