给出前序中序重建二叉树
来源:互联网 发布:python 查看变量大小 编辑:程序博客网 时间:2024/06/15 17:56
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
//给出前序和中序重建二叉树
public class TreeReBuild {
public static void main(String[] args) {
int[] pretree=new int[]{1,2,4,7,3,5,6,8};
int[] midtree=new int[]{4,7,2,1,5,3,8,6};
reConstructBinaryTree(pretree,midtree);
}
public static TreeNode reConstructBinaryTree(int [] pre,int [] in) {
return getTreeNode(pre,in,0,pre.length-1,0,in.length-1);
}
public static TreeNode getTreeNode(int[] pretree,int[] midtree,int a,int b,int c,int d){
TreeNode tree =new TreeNode(pretree[a]);
int i=-1;
for(int j=c;j<=d;j++){
i++;
if(pretree[a]==midtree[j]){
break;
}
}
if(c==d){
tree.left=null;
tree.right=null;
}else if(i==0&&c+i!=d){
tree.left=null;
tree.right=getTreeNode(pretree,midtree,a+1,b,c+1,d);
}else if(c+i==d&&i!=0){
tree.right=null;
tree.left=getTreeNode(pretree,midtree,a+1,b,c,d-1);
}else{
tree.left=getTreeNode(pretree,midtree,a+1,a+i,c,c+i-1);
tree.right=getTreeNode(pretree,midtree,a+i+1,b,c+i+1,d);
}
return tree;
}
}
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
//给出前序和中序重建二叉树
public class TreeReBuild {
public static void main(String[] args) {
int[] pretree=new int[]{1,2,4,7,3,5,6,8};
int[] midtree=new int[]{4,7,2,1,5,3,8,6};
reConstructBinaryTree(pretree,midtree);
}
public static TreeNode reConstructBinaryTree(int [] pre,int [] in) {
return getTreeNode(pre,in,0,pre.length-1,0,in.length-1);
}
public static TreeNode getTreeNode(int[] pretree,int[] midtree,int a,int b,int c,int d){
TreeNode tree =new TreeNode(pretree[a]);
int i=-1;
for(int j=c;j<=d;j++){
i++;
if(pretree[a]==midtree[j]){
break;
}
}
if(c==d){
tree.left=null;
tree.right=null;
}else if(i==0&&c+i!=d){
tree.left=null;
tree.right=getTreeNode(pretree,midtree,a+1,b,c+1,d);
}else if(c+i==d&&i!=0){
tree.right=null;
tree.left=getTreeNode(pretree,midtree,a+1,b,c,d-1);
}else{
tree.left=getTreeNode(pretree,midtree,a+1,a+i,c,c+i-1);
tree.right=getTreeNode(pretree,midtree,a+i+1,b,c+i+1,d);
}
return tree;
}
}
0 0
- 给出前序中序重建二叉树
- 给出前序与中序 序列 重建二叉树
- 重建二叉树,给出一个二叉树的前序和中序遍历,恢复二叉树的结构
- 根据前序中序序列重建二叉树
- 根据前序中序遍历,重建二叉树
- 【编程题】根据前序中序重建二叉树
- 面试题-前序中序序列重建二叉树
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- IIS的部署(一)------基础配置
- Android Webview的一些使用总结和遇到过得坑
- seqlearn
- win10系统下制作win10x64pe教程
- python自动化测试应用-第7篇(WEB测试)--Selenium进阶篇
- 给出前序中序重建二叉树
- OP频率补偿的艺术
- ajaxStart() 和ajaxStop()的方法
- android 禁止软件盘全屏遮挡界面的问题记录
- spring编码过滤器解决乱码问题
- mybatis 使用集合
- BroadcastReceiver
- 二叉树
- js闭包为动态数据添加addEventListener传参问题