题目描述

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

思路:

前序遍历是先遍历根结点,再依次遍历左结点和右结点。
中序遍历是先遍历左结点,然后根结点,最后右结点。
那么首先要去前序找到树的根结点,然后以循环的方式从中序中找到这个根结点的位置,则根节点左右两边序列分别是二叉树的左右子树。找到左右子树后,通过递归来找左右子树内部的二叉树节点。

class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None
class Solution:# 返回构造的TreeNode根节点def reConstructBinaryTree(self, pre, tin):if(len(pre)==0 or len(tin)==0):return Noneroot=TreeNode(pre[0])for i,item in enumerate(tin):if(item==root.val):root.left=self.reConstructBinaryTree(pre[1:i+1],tin[:i])root.right=self.reConstructBinaryTree(pre[i+1:],tin[i+1:])return root
if __name__=='__main__':sl=Solution()pre=[4,2,1,3,6,5,7]tin=[1,2,3,4,5,6,7]treeRoot1 = sl.reConstructBinaryTree(pre, tin)
/*** Definition for binary tree* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
public class Solution {public TreeNode reConstructBinaryTree(int [] pre,int [] in) {//递归的初始值务必写对TreeNode root=rtBinaryTree(pre,0,pre.length-1,in,0,in.length-1);return root;}//递归的函数,建立后续左右结点与根结点的关系public TreeNode rtBinaryTree(int [] pre,int preStart,int preEnd,int [] in,int inStart,int inEnd){//检查数组里还有没有结点if(preStart>preEnd||inStart>inEnd)return null;//先在先序找到根结点TreeNode root=new TreeNode(pre[preStart]);//去中序找左右子树for(int i=inStart;i<inEnd+1;i++){if(in[i]==root.val){//建立根结点的左结点,注意这里求子树的长度时,一定要注意以输入的起始终止序号来进行递归。//尤其注意i+preStart-inStart 和 preStart+i+1-inStartroot.left=rtBinaryTree(pre,preStart+1,i+preStart-inStart,in,inStart,i-1);//建立根结点的右结点root.right=rtBinaryTree(pre,preStart+i+1-inStart,preEnd,in,i+1,inEnd);break;                                }}return root;}
}

《剑指offer》重建二叉树的解法相关推荐

  1. 剑指offer 重建二叉树

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

  2. 剑指offer 重建二叉树 python

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 样例 输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4, ...

  3. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  4. 剑指offer07.重建二叉树

    剑指offer07重建二叉树 题目 : 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 示例 : Input: preo ...

  5. 【LeetCode】剑指 Offer 34. 二叉树中和为某一值的路径

    [LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径 文章目录 [LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径 package offer;import ja ...

  6. 【LeetCode】剑指 Offer 27. 二叉树的镜像

    [LeetCode]剑指 Offer 27. 二叉树的镜像 文章目录 [LeetCode]剑指 Offer 27. 二叉树的镜像 一.递归法 二.辅助栈(或队列) 一.递归法 根据二叉树镜像的定义,考 ...

  7. 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)

    文章目录 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树: 样例 1: 限制: 分析 题解 rust go c++ java python 原题传送门:https://leetcode. ...

  8. JZ27 [剑指 Offer 27] 二叉树的镜像

    二叉树的镜像 Category Difficulty Likes Dislikes lcof Easy (79.61%) 311 - 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: ...

  9. 《剑指offer》二叉树镜像

    剑指offer简单题,但是能一下写对也需要小心考虑细节. 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 /   / 5 7 9 11 ...

  10. 【Java】 剑指offer(27) 二叉树的镜像

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 思路 画图可 ...

最新文章

  1. Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
  2. java如何压缩html代码,java 压缩html文件
  3. 名为 cursor_jinserted 的游标不存在_质量工程师必须了解的测量常识,你不知道怎么行...
  4. input在iOS里的兼容性
  5. Mocha 和 Chai 入门初探
  6. Android之Bundle类
  7. 细菌基因组基本概念(一)
  8. Mr.J--原生Javascript实现俄罗斯方块(完整版(附源代码下载链接))
  9. 列表视图案例1——阅读古诗
  10. SQL Server上的审计表和数据版本控制
  11. 程序布置到服务器上速度慢_百战程序员python面试题总结---高级语法(4)
  12. Spring boot 的profile功能如何实现多环境配置自动切换
  13. 音乐服务器 linux,Linux 下五个很酷的音乐播放器
  14. httpwatch使用_使用PHP自动化HTTPWatch
  15. 浅谈Attention注意力机制
  16. Pulsar的Proxy支持和SNI路由 - 修改...
  17. android手机是否root,已经2017年了,安卓手机还需要Root吗?
  18. python爬虫获取携程旅游景点评分和评论
  19. 常见登录密码加密方式
  20. Python--画图时希腊字母的显示

热门文章

  1. 乐高ev3搭建图纸大全_乐高课程的详细介绍,内附7岁系列课程,还不抓紧时间收藏...
  2. 这样部署防病毒网关才妙啊!2000字详解奉上
  3. 学会编单片机必须会c语言吗,十天学会单片机和C语言编程.docx
  4. 安装 3dsMax 2020 there is problem 错误
  5. 复旦大学高等数学学习网站
  6. 如何抓取蓝光DVD暮光之城月食为DivX AVI格式
  7. HP DL360 G6 升级BIOS
  8. 如何让Low Poly好看
  9. iis 6 7 8预加载,提升web访速
  10. 安徽理工大学计算机科学工程学院,安徽理工大学计算机科学与工程学院文件(3页)-原创力文档...