Java对二叉树的操作
面试题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对二叉树的操作相关推荐
- java建树_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...
本文实例讲述了Java实现的二叉树常用操作.分享给大家供大家参考,具体如下: import java.util.ArrayDeque; import java.util.Queue; import j ...
- java 实现二叉树操作
java实现二叉树的创建.先序遍历.中序遍历.后序遍历及二叉树的深度 public class Tree { private int data;// 数据节点 private Tree left;/ ...
- java计算二叉树的节点最小值_java计算二叉树的高度以及叶节点个数
java实现二叉树的相关操作 代码如下 package 二叉树有关; import java.util.ArrayDeque; import java.util.Queue; public class ...
- 【Java 编程】文件操作,文件内容的读写—数据流
一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...
- 广州大学学生实验报告,数据结构实验,二叉树的操作与实现
广州大学学生实验报告 开课学院及实验室: 计算机科学与工程实验室 418 2022年10月3日 学院 计算机科学与网络工程 年级.专业.班 计科 姓名 Great Macro ...
- java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...
- java对cookie的操作
原文:http://www.cnblogs.com/muzongyan/archive/2010/08/30/1812552.html java对cookie的操作比较简单,主要介绍下建立cookie ...
- java大文件读写操作
转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...
- java对文本文件进行操作:读取、修改、添加、删除、重命名等
java对文本文件进行操作:读取.修改.添加.删除.重命名等 Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 .字符类型的输入和输出流. IO是指对数据流的输入和输出 ...
最新文章
- C#中TextBox只能输入数字的代码
- 人工智能-离散数学-消解原理
- 【redis】2.redis可视化工具安装使用
- Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?
- Hive _偏门常用查询函数(三)附带实例(Rank)
- Java 9:流API的增强
- php+tp框架+API,【路由】利用Thinkphp路由实现API开发版本管理
- python IDE比较与推荐
- java 虚拟机内存管理_java虚拟机内存管理
- 不会有1TB?研究机构称iPhone 13最高存储仍为512GB
- 定义域是取交集吗_高中数学;函数定义域秒解技巧(学好函数突破数学)
- [转载] C++子字符串查找及提取
- 《Effective Python 2nd》——推导与生成
- python alembic which comes from SQLalchemy
- read tcp 192.168.0.106:56298->185.199.111.153:80: wsarecv: An existing connection was forcibly close
- Sql取出各科分数前三名的学生,Sql各科成绩前三的学生
- 微信网页版打不开怎么办?这里有官方解决办法!
- 如何说服你的同事使用TDD
- c语言美元转换人民币的程序,【其它】编程题: 1.编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...
- Android Window系列(一)- window与decorview