已知前序遍历和中序遍历重建二叉树
来源:互联网 发布:折800认证淘宝店铺 编辑:程序博客网 时间:2024/06/13 18:12
package exam;/** * Created by Administrator on 2017/3/12. * 重建二叉树 * 递归创建 */public class RebuiltTree { public static void main(String[]args){ int []qianxu={1,2,4,7,3,5,6,8}; int [] zhongxu={4,7,2,1,5,3,8,6}; BinaryTreeNode root = constructTrees(qianxu, zhongxu); printQianxu(root); } /** * 二叉树重建 * @param qianxu * @param zhongxu * @return */ private static BinaryTreeNode constructTrees(int[] qianxu, int[] zhongxu) { BinaryTreeNode root=new BinaryTreeNode(qianxu[0]); //每次的根节点 int leftNum=0;//左子树数字个数 for(int i=0;i<zhongxu.length;i++){ if(root.data==zhongxu[i]){ break; } else { leftNum++; } } int rightnum=qianxu.length-1-leftNum; //右子数字个数 if(leftNum>0){ int[] leftqianxu=new int[leftNum]; int[] leftzhongxu=new int[leftNum]; for(int i=0;i<leftNum;i++){ leftqianxu[i] = qianxu[i + 1]; leftzhongxu[i] = zhongxu[i]; } //递归构造左子树 BinaryTreeNode leftRoot = constructTrees(leftqianxu, leftzhongxu); root.setLeft(leftRoot); } if(rightnum>0){ int [] rightqianxu=new int[rightnum]; int [] rightzhongxu=new int[rightnum]; for(int i=0;i<rightnum;i++){ rightqianxu[i]=qianxu[leftNum+i+1]; rightzhongxu[i]=zhongxu[leftNum+1+i]; } BinaryTreeNode rightroot=constructTrees(rightqianxu,rightzhongxu); root.setRight(rightroot); } return root; } private static class BinaryTreeNode{ BinaryTreeNode left; BinaryTreeNode right; int data; BinaryTreeNode(int data){ this(null,null,data); } public BinaryTreeNode(BinaryTreeNode left, BinaryTreeNode right, int data) { this.left=left; this.right=right; this.data=data; } public BinaryTreeNode getLeft() { return left; } public void setLeft(BinaryTreeNode left) { this.left = left; } public BinaryTreeNode getRight() { return right; } public void setRight(BinaryTreeNode right) { this.right = right; } public int getData() { return data; } public void setData(int data) { this.data = data; } } public static void printPostOrder(BinaryTreeNode root) { if (root != null) { printPostOrder(root.getLeft()); printPostOrder(root.getRight()); System.out.print(root.getData() + "、"); } } public static void printZhongxu(BinaryTreeNode root){ if(root!=null){ printZhongxu(root.getLeft()); System.out.print(root.getData()+","); printZhongxu(root.getRight()); } } public static void printQianxu(BinaryTreeNode root){ if (root!=null){ System.out.print(root.data+","); printQianxu(root.left); printQianxu(root.right); } }}
0 1
- 已知二叉树的前序遍历和中序遍历重建二叉树(二叉树)
- 已知前序遍历和中序遍历,重建二叉树
- 已知前序遍历和中序遍历重建二叉树
- 已知前序遍历和中序遍历重建二叉树
- 前序遍历和中序遍历重建二叉树
- 前序遍历和中序遍历重建二叉树
- 已知二叉树的后序遍历和中序遍历重建二叉树(二叉树)
- 已知二叉树的前序、中序遍历,重建二叉树
- 已知二叉树的前序遍历和中序遍历求后序遍历(二叉树)
- 二叉树系列:已知二叉树的中序遍历和前序遍历,求后序遍历
- 【面试算法系列】已知二叉树的前序和中序遍历重建二叉树 - C语言实现
- 已知前序和中序遍历恢复二叉树
- 二叉树遍历:已知前序和中序,求后序
- 二叉树遍历---已知前序遍历和中序遍历求其后序
- 二叉树--已知前序遍历和中序遍历,输出后续遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的前序遍历和中序遍历求后序遍历
- iOS AppDelegate 代理详解(启动,打开App,推送,通知)
- SortStep 排序
- 不平衡数据下的机器学习方法简介
- 2017湖南多校第二场-20170312
- centos下安装openmeetings
- 已知前序遍历和中序遍历重建二叉树
- Android GridView实现动画效果
- 通话记录
- MySQL数据结构分析—IO_CACHE
- php获取当前操作系统类型 PHP_OS
- databinding 使用include标签报错
- linux中的免密码登录
- aws 批量创建instance并绑定security groups
- 杭电ACM第1001题——Sum Problem