面试题7:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树,假设输入的前序遍历和中序遍历的结果中都不包含重复的数字。例如:输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}则重建如图(a)所示的二叉树并输出它的头节点。二叉树节点的定义如(b):

(a)

struct BinaryTreeNode
{int              m_nValue;BinaryTreeNode   m_pLeft;BinaryTreeNode   m_pRight;
};

(b)

示例代码:

public class BinaryTreeNode {public  int value;   /*结点的值*/BinaryTreeNode leftNode;    /*左子树*/BinaryTreeNode rightNode;   /*右子树*/
}
public class BinaryTree {public static void main(String args[]){int[] preSort = {1,2,4,7,3,5,6,8};  /*前序遍历序列*/int[] inSort = {4,7,2,1,5,3,8,6};   /*中序遍历序列*/}public static BinaryTreeNode constructCore(int[] preorder,int[] inorder)throws Exception{/*两个序列不能为空*/if (preorder == null || inorder == null){return null;}/*两个序列长度要一样*/if (preorder.length != inorder.length){throw new Exception("长度不一样,非法的输入");}BinaryTreeNode root = new BinaryTreeNode();/*前序遍历的第一个就是根节点*/for (int i = 0;i < inorder.length;i++){if (inorder[i] == preorder[0]){root.value = inorder[i];System.out.println(root.value);/*遍历左子树*//**前序遍历的左子树是下标从1到i+1(不包括i+1)的数*中序遍历的左子树是下标从0到i(不包括i)的数* */root.leftNode = constructCore(Arrays.copyOfRange(preorder,1,i+1),Arrays.copyOfRange(inorder,0,i));root.rightNode = constructCore(Arrays.copyOfRange(preorder,i+1,preorder.length),Arrays.copyOfRange(inorder,i+1,inorder.length));}}return root;}
}


Java对二叉树的操作相关推荐

  1. java建树_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...

    本文实例讲述了Java实现的二叉树常用操作.分享给大家供大家参考,具体如下: import java.util.ArrayDeque; import java.util.Queue; import j ...

  2. java 实现二叉树操作

    java实现二叉树的创建.先序遍历.中序遍历.后序遍历及二叉树的深度 public class Tree { private int data;// 数据节点  private Tree left;/ ...

  3. java计算二叉树的节点最小值_java计算二叉树的高度以及叶节点个数

    java实现二叉树的相关操作 代码如下 package 二叉树有关; import java.util.ArrayDeque; import java.util.Queue; public class ...

  4. 【Java 编程】文件操作,文件内容的读写—数据流

    一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...

  5. 广州大学学生实验报告,数据结构实验,二叉树的操作与实现

    广州大学学生实验报告 开课学院及实验室: 计算机科学与工程实验室 418              2022年10月3日 学院 计算机科学与网络工程 年级.专业.班 计科 姓名 Great Macro ...

  6. java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

    http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...

  7. java对cookie的操作

    原文:http://www.cnblogs.com/muzongyan/archive/2010/08/30/1812552.html java对cookie的操作比较简单,主要介绍下建立cookie ...

  8. java大文件读写操作

    转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...

  9. java对文本文件进行操作:读取、修改、添加、删除、重命名等

    java对文本文件进行操作:读取.修改.添加.删除.重命名等 Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 .字符类型的输入和输出流. IO是指对数据流的输入和输出 ...

最新文章

  1. C#中TextBox只能输入数字的代码
  2. 人工智能-离散数学-消解原理
  3. 【redis】2.redis可视化工具安装使用
  4. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?
  5. Hive _偏门常用查询函数(三)附带实例(Rank)
  6. Java 9:流API的增强
  7. php+tp框架+API,【路由】利用Thinkphp路由实现API开发版本管理
  8. python IDE比较与推荐
  9. java 虚拟机内存管理_java虚拟机内存管理
  10. 不会有1TB?研究机构称iPhone 13最高存储仍为512GB
  11. 定义域是取交集吗_高中数学;函数定义域秒解技巧(学好函数突破数学)
  12. [转载] C++子字符串查找及提取
  13. 《Effective Python 2nd》——推导与生成
  14. python alembic which comes from SQLalchemy
  15. read tcp 192.168.0.106:56298->185.199.111.153:80: wsarecv: An existing connection was forcibly close
  16. Sql取出各科分数前三名的学生,Sql各科成绩前三的学生
  17. 微信网页版打不开怎么办?这里有官方解决办法!
  18. 如何说服你的同事使用TDD
  19. c语言美元转换人民币的程序,【其它】编程题: 1.编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...
  20. Android Window系列(一)- window与decorview

热门文章

  1. 9-spark学习笔记-sparkstreaming
  2. javascript~callback回调函数
  3. 机器学习从入门到精通系列之BP神经网络理论知识详解
  4. 深度学习核心技术精讲100篇(二)-图网络中的社群及社群发现算法
  5. hadoop学习--单表关联
  6. stylecloud.gen_stylecloud() 参数详解
  7. MatLab基础操作
  8. 【分布式计算】DFS BigTable
  9. Quartz 在 Spring 中如何动态配置时间--转
  10. 【思维训练】刺激战场极寒模式下带妹吃鸡的【兵法思维】和【统计学思维】