1、题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。

public class Solution
{public TreeNode reConstructBinaryTree(int [] pre,int [] in){TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1);return root;}//前序遍历{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}private TreeNode reConstructBinaryTree(int [] pre,int startPre,int endPre,int [] in,int startIn,int endIn) {     if(startPre>endPre||startIn>endIn)return null;TreeNode root=new TreeNode(pre[startPre]);for(int i=startIn;i<=endIn;i++)if(in[i]==pre[startPre]){root.left=reConstructBinaryTree(pre,startPre+1,startPre+i-startIn,in,startIn,i-1);root.right=reConstructBinaryTree(pre,i-startIn+startPre+1,endPre,in,i+1,endIn);}return root;}
}

2、Java创建二叉树:

public class TreeTest
{public static String[] str;public static int count;/*** 静态内部类,定义二叉树节点*/static class TreeNode{public String data;TreeNode lchild;TreeNode rchild;public TreeNode(String x){this.data = x;}}/*** 根据前序序列递归构建二叉树* * @return*/public static TreeNode createBtree(){TreeNode root = null;if (count >= str.length || str[count++].equals("#")){root = null;} else{root = new TreeNode(str[count - 1]);root.lchild = createBtree();root.rchild = createBtree();}return root;}/*** 前序遍历* * @param root*/public static void preTraverse(TreeNode root){if (root != null){System.out.print(root.data + " ");preTraverse(root.lchild);preTraverse(root.rchild);}}/*** 中序遍历* * @param root*/public static void inTraverse(TreeNode root){if (root != null){inTraverse(root.lchild);System.out.print(root.data + " ");inTraverse(root.rchild);}}/*** 后序遍历* * @param root*/public static void postTraverse(TreeNode root){if (root != null){postTraverse(root.lchild);postTraverse(root.rchild);System.out.print(root.data + " ");}}public static void main(String args[]){Scanner cin = new Scanner(System.in);while (cin.hasNext()){String s = cin.nextLine();str = s.split(",");count = 0;TreeNode root = createBtree();// 前序遍历
            preTraverse(root);System.out.println();// 中序遍历
            inTraverse(root);System.out.println();// 后序遍历
            postTraverse(root);System.out.println();}cin.close();}
}

剑指offer面试题6:重建二叉树相关推荐

  1. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

  2. 剑指offer面试题[6]-重建二叉树

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

  3. 剑指Offer - 面试题7. 重建二叉树(递归)

    1. 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍 ...

  4. 剑指offer面试题07. 重建二叉树(递归)(切片)

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 思路 详见链接 代码 #class TreeNode: # def __ini ...

  5. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  6. 剑指offer——面试题39:二叉树的深度

    剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...

  7. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  8. 【递归】剑指offer——面试题19:二叉树的镜像

    剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...

  9. 剑指offer_面试题6_重建二叉树(分解步骤,逐个击破)

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

  10. 剑指offer第7题 重建二叉树

    前言 该系列文章为本人刷leetcode的记录,主要旨在分享刷题的思路及算法解析(尽可能的一题多解),另方便自己日后查阅回顾.代码的实现语言是python和go. 想进大厂免不了刷题,一起加油吧,小伙 ...

最新文章

  1. matlab 线模式密度,环形腔窄线宽光纤激光器的研究
  2. C语言试题十六之写删除字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
  3. 工作那些事(三十一)怎样带好一个项目团队
  4. sqlserver备份后无法还原的解决方法
  5. 荒芜的周六-PHP之面向对象(三)
  6. 一个珊瑚虫倒下了,千万个珊瑚虫站起来!欢呼吧QQ****下载,不断更新
  7. 基于 WinPcap/Npcap 网络桥接与局域网网关
  8. 先学python还是r-r语言和python学哪个?
  9. win10计算机初始输入法,Win10默认输入法怎么设置?
  10. Excel如何查找重复内容
  11. 如何修改织梦后台登陆界面
  12. Idear中文文件乱码处理_大批量乱码
  13. ssh查看服务器上的文件,ssh 访问远程服务器文件路径
  14. Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: com/po/IdCard
  15. 董树义 近代微波测量技术_潘时龙:28岁推开微波光子学大门
  16. Java中判断两个日期是否在同一个月
  17. 「UbuntuROS」Ubuntu系统下几个必不可少的设置和软件|1-4
  18. Google创始人---谢尔盖-布林
  19. 默认使用Adobe Acrobat DC打开设置
  20. AI语音助手识别动画AE制作教程

热门文章

  1. SIP术语的名词解析
  2. 深入解析Python中的变量和赋值运算符
  3. 德富莱智能抹墙机器人_深圳智能制造应急生产联盟成立,大咖共探机器人行业新机遇...
  4. android 重启后进入安全模式_图文详细教程:台式电脑或笔记本也可以运行Android系统,凤凰OS...
  5. pythonweb服务器部署iis_Python开发入门与实战15-IIS部署
  6. ds图—最小生成树_Java: Kruskal算法生成最小生成树(邻接矩阵)
  7. c# imager让图片有圆角unity_C# 10分钟完成百度图片提取文字(文字识别)——入门篇...
  8. 简单介绍Windows中将Nginx添加为服务的问题
  9. 教程分享-Vim编辑器用法
  10. 如何快速学会别人的代码和思维