美文网首页
剑指Offer(四)

剑指Offer(四)

作者: zhjcjdtc | 来源:发表于2019-02-20 23:49 被阅读0次

剑指Offer(四)

重建二叉树

题目描述:

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

解题思路:

此题用递归来做,给出了前序遍历和中序遍历,那么在确定根结点的情况下,可以在前序序列和中序序列中得到根结点的左子树和右子树,一直递归直至叶子结点。

代码如下:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        if len(pre) == 0:
            return None
        if len(pre) == 1:
            return TreeNode(pre[0])
        else:
            root = TreeNode(pre[0])
            root.left = self.reConstructBinaryTree(pre[1:tin.index(pre[0])+1],tin[:tin.index(pre[0])])
            root.right = self.reConstructBinaryTree(pre[tin.index(pre[0])+1:],tin[tin.index(pre[0])+1:])
        return root

相关文章

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指Offer(四)

    题目十六:合并两个排序的链表 题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表...

  • 剑指offer(四)

    剑指offer(四) 面试题四十:数组中只出现1次的数字 题目:一个整形数组里除了两个数字之外,其他的数字都出现了...

  • 剑指Offer(四)

    题目汇总31.栈的压入、弹出序列(中等),本题考查举例让抽象具体化32.从上往下打印二叉树(中等),本题考查举例让...

  • 剑指Offer(四)

    剑指Offer(四) 重建二叉树 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的...

  • 剑指offer 和 leetcode题目

    剑指offer leetcode

  • 算法 | 一周刷完《剑指Offer》 Day4:第38~49题

    写在前面 本系列包含《剑指Offer》66道算法题,预计一周刷完,这是第四篇。系列汇总:剑指Offer 66题 J...

  • 单例模式

    单例模式 最近在看《剑指offer》,根据《剑指offer》的讲解,结合《effectiveJava》简单学习了一...

  • 年龄排序

    摘抄资料:《剑指offer》

  • 剑指offer

    第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...

网友评论

      本文标题:剑指Offer(四)

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