LeetCode(python)——94.二叉

题目

给定一个二叉树的根节点 root ,返回 它的 中序 遍历

示例 1:

复制代码
输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

复制代码
输入:root = []
输出:[]

示例 3:

复制代码
输入:root = [1]
输出:[1]

提示:

  • 树中节点数目在范围 [0, 100]
  • -100 <= Node.val <= 100

思路

没啥好写的,重点是代码实现~

1.递归

2.迭代

代码

1.递归

python 复制代码
# 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: Optional[TreeNode]) -> None:
            if node is None:
                return
            dfs(node.left)
            ans.append(node.val)    # 这行代码放前面就是前序遍历,放后面就是后序遍历
            dfs(node.right)
        
        ans = []
        dfs(root)
        return ans

2.迭代

python 复制代码
# 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]:
        res = []
        stack = []    # 用于遍历时暂存节点
        
        while stack or root:
        # 一直往左走,并把节点存入stack
            if root:
                stack.append(root)
                root = root.left
            else:   # 左边走到头了,可以开始从stack中取数存进res了~
                tmp = stack.pop()
                res.append(tmp.val)
                root = tmp.right   # 遍历右子树

        return res
相关推荐
He少年14 小时前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python
AI_Claude_code14 小时前
ZLibrary访问困境方案四:利用Cloudflare Workers等边缘计算实现访问
javascript·人工智能·爬虫·python·网络爬虫·边缘计算·爬山算法
前端大波15 小时前
前端面试通关包(2026版,完整版)
前端·面试·职场和发展
jedi-knight15 小时前
AGI时代下的青年教师与学术民主化
人工智能·python·agi
迷藏49415 小时前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构
迷藏49415 小时前
**发散创新:基于Solid协议的Web3.0去中心化身份认证系统实战解析**在Web3.
java·python·web3·去中心化·区块链
2301_8227032015 小时前
Flutter 框架跨平台鸿蒙开发 - 创意声音合成器应用
算法·flutter·华为·harmonyos·鸿蒙
zhaoshuzhaoshu15 小时前
人工智能(AI)发展史:详细里程碑
人工智能·职场和发展
cmpxr_15 小时前
【C】数组名、函数名的特殊
c语言·算法
weixin_1562415757615 小时前
基于YOLOv8深度学习花卉识别系统摄像头实时图片文件夹多图片等另有其他的识别系统可二开
大数据·人工智能·python·深度学习·yolo