java 数组 树_java使用顺序数组实现二叉树
顺序数组实现二叉树
实现原理
对于下标为index的节点其满足
1.左孩子节点的下标为2index+1
2.右孩子节点的下标为2index+2
代码实现
package tree;
public class ArrayBinaryTree {
private int[] arr;
public ArrayBinaryTree(int[] arr)
{
this.arr=arr;
}
public void preOrder(int index)
{
if(arr==null||arr.length==0)
{
System.out.println("数组为空,不可以按照二叉树的前序遍历");
}
System.out.println(arr[index]);
//向左进行前序遍历
if(index*2+1
{
preOrder(2*index+1);
}
//向右递归
if(index*2+2
{
preOrder(2*index+2);
}
}
public void infixOrder(int index)
{
if(arr==null||arr.length==0)
{
System.out.println("数组为空,不可以按照二叉树来进行遍历~");
}
if(2*index+1
{
infixOrder(2*index+1);
}
System.out.println(arr[index]);
if(2*index+2
{
infixOrder(2*index+2);
}
}
public void postOrder(int index)
{
if(arr==null||arr.length==0)
{
System.out.println("数组为空,不可以按照二叉树来进行遍历~");
}
if(2*index+1
{
infixOrder(2*index+1);
}
System.out.println(arr[index]);
if(2*index+2
{
infixOrder(2*index+2);
}
System.out.println(arr[index]);
}
}
package tree;
public class ArrayBinaryTreeDemo {
public static void main(String[] args) {
int[] arr= {1,2,3,4,5,6,7,};
ArrayBinaryTree arrBinaryTree=new ArrayBinaryTree(arr);
arrBinaryTree.preOrder(0);
arrBinaryTree.infixOrder(0);
arrBinaryTree.postOrder(0);
}
}
主要应用
堆排序
java 数组 树_java使用顺序数组实现二叉树相关推荐
- java 设置数组长度_java如何增加数组长度
遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子): ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(ht ...
- java数组语法_Java 基本语法----数组
数组 数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理. 数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任何数据类型,包 ...
- java二维数组添加元素_Java二维数组与动态数组ArrayList类详解
java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...
- java交换二维数组行列_java二维数组行列
培训系列AmberXie 求二维数组行列之和把二维数组 a 各行之和分别放入 b... 二维数组例题答案[技巧] [例 1]编写程序,利用二维数组在窗体上输出如图 5x5...如果没有 max 为行列 ...
- java二维数组坐标_Java 二维数组
二维数组的定义 二维数组本质上是以数组作为数组元素的数组,即"数组的数组". 因为数组只能保存一行数据.在生活中,比如坐标等等,我们需要用二维数组来表示.通过行号和列好来定位数据. ...
- java二维数组试题_Java二维数组及习题总结
二维数组 二维数组:就是一个由行和列组成的一个矩阵(Matrix):在这个矩阵中访问元素时,是根据元素的行角标和列角标所确定的. 二维数组在内存中的存储:无论是二维数组,还是多维数组,它们本身就是一个 ...
- java对象类型数组赋值_java声明对象数组
java如何对象创建数组并初始化 急夜影驱动编程小编今天和大家分享答案 /** * 功能:声明一个学生类 * @author qqliweng * 时间:2009-10-22 * 版本:V1.0 */ ...
- java 数组求和_java 实现随机数组输出及求和实例详解
导读热词 java 实现随机数组输出及求和 问题描述: 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路: 使用java.util中的 ...
- java数组键_Java基础之数组
数组 数组就是用于存储相同数据类型数据的一个容器.可以通过有规律的索引来访问没有规律的元素. 一维数组 定义格式:元素的数据类型[ ] 数组名称 = new 元素的数据类型 [ 数组容器大小 ]: 数 ...
最新文章
- 关于召开全国大学生智能车竞赛--百度智慧交通项目 培训通知(华中站)
- 基本蚁群算法的C++源程序
- 一文教你搞定变频器的安装、原理、接线、维护及故障处理
- java进出栈_JVM函数调用:Java出入栈
- python array的应用
- 55_pytorch,自定义数据集
- 【工具使用系列】关于 MATLAB 有限元分析,你需要知道的事
- Java整合Spring发送邮件
- Hadoop-HBASE案例分析-Hadoop学习笔记二
- ThinkPHP对Cookie的支持
- 你真的会用Vue-cli脚手架和Element-ui进行项目创建吗?
- 可以写计算机哪些方面的论文,计算机应用基础方面论文题目 计算机应用基础论文题目哪个好...
- golang基础02
- 555定时器的应用——施密特触发器
- centos yum安装tracert_centos6.3如何打开tracert
- Word开发工具Aspose.Words功能演示:在C ++中以编程方式在Word文档中添加或删除页眉和页脚
- C# 调用FFmpeg处理音视频的示例
- 基于Android P版本PKMS详解二
- 图像基本处理——图像阈值和平滑
- CGroups v2分析
热门文章
- 为什么我们要使用Async、Await关键字
- 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
- 拥抱.NET Core系列:依赖注入(1)
- 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
- .NET Core 构建配置文件从 project.json 到 .csproj
- 搭建分布式 ASP.NET Core Web
- 华为笔记本Win11更新时由于驱动问题引起蓝牙鼠标经常断开问题解决方法
- 【ArcGIS风暴】GlobeLand30全球数据处理教程(批量投影转换、无效值处理、拼接)
- ArcGIS中合并(merge)、联合(union)、追加(append)、融合(dissolve)的用法区别与联系
- Hadoop的伪分布安装 hadoop的核心思想