美文网首页
面试题07. 重建二叉树

面试题07. 重建二叉树

作者: 寂灭天骄小童鞋 | 来源:发表于2020-03-26 14:45 被阅读0次

https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/

var inDic = Dictionary<Int, Int>()
var preNodes = [Int]()

func buildTree(_ preorder: [Int], _ inorder: [Int]) -> TreeNode? {
    if preorder.count <= 0 || inorder.count <= 0 {return nil}
    for (idx, value) in inorder.enumerated() {
        inDic.updateValue(idx, forKey: value)
    }
    preNodes = preorder
    return reBuildTree(0, 0, inorder.count - 1)
}
//前序遍历根节点idx,中序遍历子树左右边界
func reBuildTree(_ preRootIdx: Int, _ left: Int, _ right: Int) -> TreeNode? {
    if left > right {return nil}
    let preRoot = preNodes[preRootIdx]//前序遍历中的当前根节点值
    let root = TreeNode(preRoot)//创建根节点
    let inRootIdx = inDic[preRoot]!//根节点在中序遍历的下标
    
    root.left = reBuildTree(preRootIdx + 1, left, inRootIdx - 1)
    // 前序遍历右子树的根节点idx =   左子节点的数量   + 前序根节点idx + 1
    root.right = reBuildTree(inRootIdx - left + preRootIdx + 1, inRootIdx + 1, right)
    return root
}

相关文章

  • LeetCode | 面试题07. 重建二叉树【剑指Offer】

    LeetCode 面试题07. 重建二叉树【剑指Offer】【Medium】【Python】【二叉树】【递归】 问...

  • 71.重建二叉树

    day18: 剑指 Offer 07. 重建二叉树[https://leetcode-cn.com/prob...

  • 剑指Offer 07. 重建二叉树

    剑指 Offer 07. 重建二叉树 题目传送门[https://leetcode-cn.com/problems...

  • 重建二叉树

    《剑指offer》面试题7:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前...

  • 剑指Offer-二叉树

    面试题7:重建二叉树 题目: 输入某二叉树的前序遍历和中序遍历的结果。请重建该二叉树。假设输入的前序遍历和中序遍历...

  • 2.3.4 树

    面试题7:重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果...

  • 面试题07. 重建二叉树

    重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中...

  • 面试题07. 重建二叉树

    题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字...

  • 面试题07. 重建二叉树

    https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/

  • 面试题07.重建二叉树_hn

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的...

网友评论

      本文标题:面试题07. 重建二叉树

      本文链接:https://www.haomeiwen.com/subject/nxoquhtx.html