顺序数组实现二叉树

实现原理

对于下标为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使用顺序数组实现二叉树相关推荐

  1. java 设置数组长度_java如何增加数组长度

    遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子): ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(ht ...

  2. java数组语法_Java 基本语法----数组

    数组 数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理. 数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任何数据类型,包 ...

  3. java二维数组添加元素_Java二维数组与动态数组ArrayList类详解

    java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  4. java交换二维数组行列_java二维数组行列

    培训系列AmberXie 求二维数组行列之和把二维数组 a 各行之和分别放入 b... 二维数组例题答案[技巧] [例 1]编写程序,利用二维数组在窗体上输出如图 5x5...如果没有 max 为行列 ...

  5. java二维数组坐标_Java 二维数组

    二维数组的定义 二维数组本质上是以数组作为数组元素的数组,即"数组的数组". 因为数组只能保存一行数据.在生活中,比如坐标等等,我们需要用二维数组来表示.通过行号和列好来定位数据. ...

  6. java二维数组试题_Java二维数组及习题总结

    二维数组 二维数组:就是一个由行和列组成的一个矩阵(Matrix):在这个矩阵中访问元素时,是根据元素的行角标和列角标所确定的. 二维数组在内存中的存储:无论是二维数组,还是多维数组,它们本身就是一个 ...

  7. java对象类型数组赋值_java声明对象数组

    java如何对象创建数组并初始化 急夜影驱动编程小编今天和大家分享答案 /** * 功能:声明一个学生类 * @author qqliweng * 时间:2009-10-22 * 版本:V1.0 */ ...

  8. java 数组求和_java 实现随机数组输出及求和实例详解

    导读热词 java 实现随机数组输出及求和 问题描述: 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路: 使用java.util中的 ...

  9. java数组键_Java基础之数组

    数组 数组就是用于存储相同数据类型数据的一个容器.可以通过有规律的索引来访问没有规律的元素. 一维数组 定义格式:元素的数据类型[ ] 数组名称 = new 元素的数据类型 [ 数组容器大小 ]: 数 ...

最新文章

  1. 关于召开全国大学生智能车竞赛--百度智慧交通项目 培训通知(华中站)
  2. 基本蚁群算法的C++源程序
  3. 一文教你搞定变频器的安装、原理、接线、维护及故障处理
  4. java进出栈_JVM函数调用:Java出入栈
  5. python array的应用
  6. 55_pytorch,自定义数据集
  7. 【工具使用系列】关于 MATLAB 有限元分析,你需要知道的事
  8. Java整合Spring发送邮件
  9. Hadoop-HBASE案例分析-Hadoop学习笔记二
  10. ThinkPHP对Cookie的支持
  11. 你真的会用Vue-cli脚手架和Element-ui进行项目创建吗?
  12. 可以写计算机哪些方面的论文,计算机应用基础方面论文题目 计算机应用基础论文题目哪个好...
  13. golang基础02
  14. 555定时器的应用——施密特触发器
  15. centos yum安装tracert_centos6.3如何打开tracert
  16. Word开发工具Aspose.Words功能演示:在C ++中以编程方式在Word文档中添加或删除页眉和页脚
  17. C# 调用FFmpeg处理音视频的示例
  18. 基于Android P版本PKMS详解二
  19. 图像基本处理——图像阈值和平滑
  20. CGroups v2分析

热门文章

  1. 为什么我们要使用Async、Await关键字
  2. 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
  3. 拥抱.NET Core系列:依赖注入(1)
  4. 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
  5. .NET Core 构建配置文件从 project.json 到 .csproj
  6. 搭建分布式 ASP.NET Core Web
  7. 华为笔记本Win11更新时由于驱动问题引起蓝牙鼠标经常断开问题解决方法
  8. 【ArcGIS风暴】GlobeLand30全球数据处理教程(批量投影转换、无效值处理、拼接)
  9. ArcGIS中合并(merge)、联合(union)、追加(append)、融合(dissolve)的用法区别与联系
  10. Hadoop的伪分布安装 hadoop的核心思想