顺序数组实现二叉树

实现原理

对于下标为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<arr.length)//防止数组下标越界
{
preOrder(2*index+1);
}
//向右递归
if(index*2+2<arr.length)
{
preOrder(2*index+2);
} } public void infixOrder(int index)
{
if(arr==null||arr.length==0)
{
System.out.println("数组为空,不可以按照二叉树来进行遍历~");
}
if(2*index+1<arr.length)
{
infixOrder(2*index+1);
}
System.out.println(arr[index]);
if(2*index+2<arr.length)
{
infixOrder(2*index+2);
} } public void postOrder(int index)
{
if(arr==null||arr.length==0)
{
System.out.println("数组为空,不可以按照二叉树来进行遍历~");
}
if(2*index+1<arr.length)
{
infixOrder(2*index+1);
}
System.out.println(arr[index]);
if(2*index+2<arr.length)
{
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使用顺序数组实现二叉树的更多相关文章

  1. java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...

  2. Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)

    Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)

  3. Java比较器对数组,集合排序一

    数组排序非常简单,有前辈们的各种排序算法,再加上Java中强大的数组辅助类Arrays与集合辅助类Collections,使得排序变得非常简单,如果说结合比较器Comparator接口和Collato ...

  4. java 多维数组遍历

    java 多维数组遍历的顺序的性能问题 ps:下图为java多维数组内存分布原理.出自:http://math.hws.edu/javanotes/c7/two-dimensional-array.p ...

  5. 第81节:Java中的数组

    第81节:Java中的数组 本节介绍数组的基本概念,数据就是一种数据结构,可以用来存储多个数据,每个数组中可以存放相同类型的数据.比如,在学校,我们是一个班,这里的班级中每个同学都是这个班级数组中的元 ...

  6. Java中的数组与集合

    此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ...

  7. Java进阶2 数组内存和对象的内存管理知识

    Java进阶2 数组内存和对象的内存管理知识 20131028 前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏 ...

  8. java实现顺序表、链表、栈 (x)->{持续更新}

    1.java实现节点 /** * 节点 * @luminous-xin * @param <T> */ public class Node<T> { T data; Node& ...

  9. java初级之数组详解

    一,数组的概念: 数组是为了存储同一种数据多个元素的集合,也可以看成是一个容器,数组既可以存储基本数据类型,也可以存储引用数据类型,数组是为了存储同种数据类型的多个值. 1.1.1,一维数组重点: 数 ...

随机推荐

  1. websocket 连接测试端口服务是否正常代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 创建虚拟机,安装操作系统,xshell6远程链接

    一.创建虚拟机 1. 首先安装vmware,注意在安装中,下面的两项不要勾选,一路下一步 2.完成安装打开之后,创建新的虚拟机 3.虚拟机创建完成,需要改配置 4.然后设置网段 5.查看服务,在运行状 ...

  3. CSS 中蒙版相关设置二三事

    写 蒙版 时会使用透明度,第一反应会使用 opacity 但这个会使子元素继承,蒙版内还有内容会被影响,从而会设置 background 属性的 rgba 值. 需要注意的是 rgba 和 gba 颜 ...

  4. LOJ #2731 [JOI2016春季合宿]Solitaire (DP、组合计数)

    题目链接 https://loj.ac/problem/2731 题解 首先一个很自然的思路是,设\(dp[i][j]\)表示选了前\(i\)列,第\(2\)行第\(i\)列的格子是第\(j\)个被填 ...

  5. Android学习_Selector

    Selector 实现组件在不同状态下不同的文字颜色.背景颜色或图片的切换,使用十分方便. 1. 创建方法 第一种:在XML中直接创建selector的XML文件,容易掌握,简单但是不灵活,较为常用. ...

  6. arxiv-sanity使用指南

    使用介绍 https://bookdown.org/wshuyi/intro-to-scientific-writings4/reading.html#find-article-with-ai

  7. 两次取反 !!a 的作用

    两次取反的作用 让a的结果只能是false或者是true:如果a是0:两次取反当然是false:如果a是null:两次取反是false:如果a是undefined:两次取法是false:其余的比如 a ...

  8. 学号 20175329 《Java程序设计》第10周学习总结

    20175329 <Java程序设计>第十周学习总结 教材学习内容总结 线程与进程 进程时程序的一次动态执行过程.线程是比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程. J ...

  9. 4 Java 选择排序

    1 基本思想 在未排序序列中找到最小元素,存放到未排序序列的起始位置.在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种算法,需要对比len-n-1次,但是只交换1次或者0次. 2 ...

  10. svn 巧用,如果遇到问题解决不了,而上一个版本可以正常使用,则可以查记录

    svn 巧用,如果遇到问题解决不了 1.svn上一个版本可以正常使用的情况下 2.查看历史 3. 丢失的代码复制回来即可