当前位置:   article > 正文

iOS LeetCode ☞ 二叉树的中序遍历_root = [1,null,2,3] 就能推出二叉树的结构?

root = [1,null,2,3] 就能推出二叉树的结构?

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

示例 1:
在这里插入图片描述

输入:root = [1,null,2,3]
输出:[1,3,2]
  • 1
  • 2

示例 2:

输入:root = []
输出:[]
  • 1
  • 2

示例 3:

输入:root = [1]
输出:[1]
  • 1
  • 2

示例 4:
在这里插入图片描述

输入:root = [1,2]
输出:[2,1]
  • 1
  • 2

示例 5:
在这里插入图片描述

输入:root = [1,null,2]
输出:[1,2]
  • 1
  • 2

提示:

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

解题思路

首先我们需要了解什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。

定义 inorder(root) 表示当前遍历到 root 节点的答案,那么按照定义,我们只要递归调用 inorder(root.left) 来遍历 root 节点的左子树,然后将 root 节点的值加入答案,再递归调用inorder(root.right) 来遍历 root 节点的右子树即可,递归终止的条件为碰到空节点。

代码

	// 94. 二叉树的中序遍历
    func inorderTraversal(_ root: TreeNode?) -> [Int] {
        var res = [Int](repeating: 0, count: 0)
        
        func inorder(_ root: TreeNode?) {
            if root == nil {
                return
            }
            inorder(root?.left)
            res.append(root!.val)
            inorder(root?.right)
        }
        
        inorder(root)
        
        return res
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50427?site
推荐阅读
相关标签
  

闽ICP备14008679号