代码随想录第十二天刷题

二叉树章节

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)       # 调用函数
#
# 两者必须在同一缩进级别
# 定义 ≠ 执行

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务