华为OJ 重建二叉树
来源:互联网 发布:淘宝账号名字大全2015 编辑:程序博客网 时间:2024/05/17 04:40
本以为用之前那个二叉树遍历的代码就行,但是在过程中总是出现一些细节性问题,所以就从新写了一个用INT存储的。
import java.util.*;public class Main{static int[] stack=new int[1000];static int t=0;static int flag=0; public static void main(String[] args) { Scanner sc=new Scanner(System.in);while(sc.hasNext()){t=0;flag=0;int n=sc.nextInt();int[] s1=new int[n];int[] s2=new int[n];for(int i=0;i<n;i++)s1[i]=sc.nextInt();for(int i=0;i<n;i++)s2[i]=sc.nextInt();post(s1,s2);if(flag==1)System.out.println("No");else{for(int i=t-1;i>=0;i--)System.out.print(stack[i]+" ");System.out.println();}} } //s1,先序,s2中序 public static void post(int[] s1,int[] s2){ try{if(s1.length==0)return;int i=0;for(;i<s2.length;){if(s2[i]==s1[0]){break;}i++;}stack[t++]=s2[i];//前序遍历int[] pre=new int[i];int[] prer=new int[s2.length-i-1];for(int j=0;j<i;j++)pre[j]=s1[1+j];for(int j=0;j<s2.length-i-1;j++)prer[j]=s1[i+1+j];int[] midl=new int[i];int[] midr=new int[s2.length-i-1];for(int j=0;j<i;j++)midl[j]=s2[j];for(int j=0;j<s2.length-i-1;j++)midr[j]=s2[i+j+1];post(prer,midr);post(pre,midl); } catch(Exception e){ flag=1; } }}
0 0
- 华为OJ 重建二叉树
- 华为OJ 二叉树遍历
- 九度OJ 1385 重建二叉树
- 【九度oj】1385 重建二叉树
- nyist oj 756 重建二叉树
- 南阳 oj 重建二叉树 题目756
- 九度OJ-剑指offer-题目1385:重建二叉树
- 九度OJ-题目1385:重建二叉树
- 华为oj 求二叉树的深度和宽度
- (数据结构)oj重建二叉树(用权值作为新二叉树的下标)
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- spark1.5.2.1小版本制作并上传mave local repo
- Android—ListView 的使用以及简单优化
- 解决ScrollView中嵌套 listView只显示1行的问题
- Python构造函数,迭代器
- panit测量文字宽度
- 华为OJ 重建二叉树
- 自定义导航栏继承自BaseNav
- qt 中文不能编译,界面中文乱码问题
- js更改日期问题处理
- 从持续集成到持续发布
- Android API Guides---Content Provider Basics
- (java)求两个排序数组(升序)中第K小的数
- android EditText输入字数限制
- python中Model 与 Module 的区别