剑指offer 二叉树重构问题
来源:互联网 发布:淘宝助理5.0官方下载 编辑:程序博客网 时间:2024/06/15 04:23
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
java实现代码:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.ArrayList;public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if(pre==null && in==null) return null; TreeNode root=new TreeNode(pre[0]); int left_length=0; int right_length=0; for(int i=0;i<in.length;i++){ if(in[i]==pre[0]){ break; }else{ left_length++; } } right_length=in.length-left_length-1; if(left_length!=0){ int prel[]=new int[left_length]; int inl[]=new int[left_length]; for(int i=0;i<left_length;i++){ prel[i]=pre[i+1]; inl[i]=in[i]; } root.left=reConstructBinaryTree(prel,inl); } else{ root.left=null; } if(right_length!=0){ int prer[]=new int[right_length]; int inr[]=new int[right_length]; int count=0; for(int i=right_length;i>0;i--){ prer[count]=pre[pre.length-i]; inr[count]=in[pre.length-i]; count++; } root.right=reConstructBinaryTree(prer,inr); ; } else{ root.right=null; } return root; }}
阅读全文
0 0
- 剑指offer 二叉树重构问题
- 剑指Offer之二叉树重构
- 剑指Offer 二叉树相关问题
- 剑指offer-二叉树镜像
- 剑指Offer: 二叉树
- 剑指offer 二叉树镜像
- 剑指offer:二叉树镜像
- 《剑指offer》二叉树镜像
- 剑指offer - 二叉树的镜像问题
- 《剑指offer》问题7 重建二叉树 Java实现
- <剑指offer>二叉树专题
- [剑指offer]重建二叉树
- <剑指offer>二叉树专题
- 【剑指offer】二叉树深度
- 【剑指offer】重建二叉树
- 剑指offer--重建二叉树
- 剑指offer--平衡二叉树
- 剑指offer---重建二叉树
- 基于openfire+smack开发Android即时聊天应用[四]-单人聊天、群聊、发送接收文件等
- 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
- 继承与派生,多继承,函数重载,构造函数调用顺序 静态多态和动态多态
- Redis(Windows)安装与使用
- 百家姓排序1
- 剑指offer 二叉树重构问题
- 使用Visual Studio Code进行开发
- 如何证明根号2不是有理数?
- OpenCV的各模块功能
- 基于Metronic的Bootstrap开发框架经验总结(8)--框架功能总体界面介绍
- 基础知识
- 关于UITextView的封装
- 高斯滤波
- 程序员, 测试一下你的逻辑思维