模板题-二叉树专题-二叉树的中序遍历

管理员
[二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/description/) ## 题目描述 给定一个二叉树的根节点 root,返回它的中序遍历结果。 中序遍历的定义:遍历左子树 → 访问根节点 → 遍历右子树 **示例** ```text 输入:root = [1,null,2,3] 输出:[1,3,2] 1 \ 2 / 3 ``` ```text 1 / \ 2 3 / \ \ 4 5 6 中序遍历顺序:4 → 2 → 5 → 1 → 3 → 6 ``` ```text 输入:root = [] 输出:[] ``` ## 解题思路 核心思想是:先递归地访问左子树,然后访问当前节点,最后递归地访问右子树。 **关注遍历执行的顺序: `左根右`** ```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]: values = [] def dfs( root_ ): if not root_: return dfs( root_.left ) values.append( root_.val ) dfs( root_.right ) dfs( root ) return values ``` **时间复杂度: `O(n)`** **空间复杂度: `O(h)`** n = 节点总数 h = 树的高度 ( 最坏情况`O(n)` 最好情况`O(log n)` )
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧