【LeetCode HOT100】94. 二叉树的中序遍历

加载中... 浏览

题目

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

二叉树中序遍历示意图

提示

一句话思路:递归 DFS——先遍历左子树,再访问根节点,最后遍历右子树

  • 中序遍历顺序是「左 -> 根 -> 右」,把访问根节点的代码行挪到左子树递归前就是前序,挪到最后就是后序,三种遍历只差这一行的位置。
  • 递归终止条件:节点为空就直接返回(空树/叶子节点的空孩子)。
  • 时间 O(n)、空间 O(n):每个节点访问一次,递归栈深度最坏 O(n)(链状树)。

答案

python
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                  # 返回中序遍历结果

留言板

加载评论中...
【LeetCode HOT100】104. 二叉树的最大深度
【LeetCode HOT100】160. 相交链表
Valaxy v0.28.0-beta.1 驱动|主题-Yunv0.28.0-beta.1