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
相关推荐
木井巳33 分钟前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
心抵鹊1 小时前
归并排序之翻转对(hard)
数据结构·算法
白山编程大哥1 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
shehuiyuelaiyuehao1 小时前
算法34,位运算符操作,总结
算法
Navigator_Z1 小时前
LeetCode //C - 1224. Maximum Equal Frequency
c语言·算法·leetcode
Navigator_Z2 小时前
LeetCode //C++ - 1226. The Dining Philosophers
c语言·算法·leetcode
昭昭日月明2 小时前
RAGFlow 入门,不用从零造轮子
python·ai编程
FOORIR2 小时前
3D视觉+AI客流系统怎么做:从Sensor Pipeline到数据事件引擎
算法
我命由我123452 小时前
Photoshop - Photoshop 把两个 PSD 文件合并
学习·ui·职场和发展·产品运营·产品经理·学习方法·photoshop
莓有烦恼吖3 小时前
Vibe Coding 的一些思考
python