[94][中等] 二叉树的中序遍历

题目描述

94. 二叉树的中序遍历

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]
   1
    \
     2
    /
   3

输出: [1,3,2]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

解题思路

递归

class Solution:
    def inorderTraversal(self, root: 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 res

迭代

class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        res, stack = [], []
        node = root

        while node is not None or stack:
            while node:
                stack.append(node)
                node = node.left

            if stack:
                node = stack.pop(-1)
                res.append(node.val)
                node = node.right
        return res

最后更新于

这有帮助吗?