就是逻辑上是二叉树,物理上是一个数组

需求

package tree;public class ArrayBinaryTreeDemo {public static void main(String[] args) {int arr [] = {1, 2, 3, 4, 5, 6, 7};ArrayBinaryTree arrayBinaryTree = new ArrayBinaryTree(arr);//arrayBinaryTree.preOrder();//arrayBinaryTree.infixOrder();arrayBinaryTree.postOrder();}
}
//编写一个ArrayBinaryTree,实现顺序存储二叉树
class ArrayBinaryTree{private int [] arr; //存储数据节点的数组public ArrayBinaryTree(int[] arr) {this.arr = arr;}//重载preOrder()public void preOrder(){this.preOrder(0);}//重载infixOrder()public void infixOrder(){this.infixOrder(0);}//重载postOrder()public void postOrder(){this.postOrder(0);}//编写一个方法,完成顺序存储二叉树前序遍历/**** @param index 数组下标*/public void preOrder(int index){//如果数组为空,或者arr.length = 0;if (arr == null || arr.length == 0){System.out.println("数组为空,不能遍历");return;}//输出当前元素System.out.println(arr[index]);//向左递归遍历if ( (index * 2 + 1) < arr.length){preOrder(2 * index + 1);}if ((index * 2 + 2) < arr.length){preOrder(index * 2 + 2);}}//中序遍历public void infixOrder(int index){if (arr == null || arr.length == 0){System.out.println("数组为空,不能遍历");return;}if ((index * 2 + 1) < arr.length){infixOrder(index * 2 + 1);}System.out.println(arr[index]);if ((index * 2 + 2)<arr.length){infixOrder(index * 2 + 2);}}//后序遍历public void postOrder(int index){if (arr == null || arr.length == 0){System.out.println("数组为空,不能遍历");return;}if ((index * 2 + 1) < arr.length){infixOrder(index * 2 + 1);}if ((index * 2 + 2)<arr.length){infixOrder(index * 2 + 2);}System.out.println(arr[index]);}}

数据结构 - 顺序存储二叉树(前序中序后序遍历)相关推荐

  1. 数据结构 5-3-2 二叉树前序中序后序遍历非递归实现

    一.前言 上一篇整理了几种遍历方式的递归实现,递归的实现方法都很简单,区区几句代码就可以实现,但是如果要用非递归的方法来实现就有些挑战了. 二.中序遍历 从中序遍历开始,其实非递归的方法就是把递归变成 ...

  2. c++ 删除二叉树的子树_数据结构—树|二叉树|前序遍历、中序遍历、后序遍历【图解实现】...

    点击蓝字关注我们 AI研习图书馆,发现不一样的精彩世界 数据 结构 二叉树的遍历 一.树 在谈二叉树的知识点之前,我们首先来看一下树和图的基本概念.树:不包含回路的连通无向图,树是一种简单的非线性结构 ...

  3. 【二叉树Java】二叉树遍历前序中序后序遍历的非递归写法

    本文主要介绍二叉树前序中序后序遍历的非递归写法 在探讨如何写出二叉树的前序中序后序遍历代码之前,我们先来明确一个问题,前序中序后序遍历根据什么区分? 二叉树的前序中序后序遍历,是相较根节点说的.最先遍 ...

  4. 二叉树中前序 中序 后序的互推

    最近开始复习数据结构,就从二叉树开始吧 1.复习前序 中序 后序 结构: 前序:根(左子树)(右子树) 中序:(左子树)根 (右子树) 后序:(左子树)(右子树)根 2. 前序+中序->后序 由 ...

  5. 用前序中序创建二叉树(用中序后序创建二叉树)

    定义二叉树结点 比如就拿这个二叉树 前序中序创建 因为前序遍历的顺序是 根 , 左 ,右. 中序的遍历是 左 根 右. 我们会很不好想,但我们可以用前序和中序把上面那个二叉树的遍历一边 前序遍历:AB ...

  6. 二叉树前序中序,后序中序,公共最近祖先的实现

    二叉树前序中序,后序中序,公共最近祖先的实现 注释中详细介绍了算法,故不再赘述. 无论是前序还是后序,一个节点的左子树和右子树都是可以看做是分开的,有一定规律可循,故可用递归进行实现. #includ ...

  7. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

    a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...

  8. 前序中序、中序后序以及前序后序构造二叉树

    文章目录 前序中序 中序后序 前序后序 定义的树节点如下, class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { ...

  9. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

最新文章

  1. uva 10152 ShellSort
  2. Java 避免精度丢失之BigDecimal 运算
  3. Sudoku Extension UVALive - 4763
  4. 技术要求→物理安全→防盗窃和防破坏
  5. JS 防止表单重复提交
  6. 【OpenCV入门教程之一】 OpenCV 2.4.8 +VS2010的开发环境配置
  7. [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k1
  8. jeesite如何已生成数据的数据源_JeeSite如何正确连接SQL SERVER 数据库
  9. java 认证考试题,2017年Java认证考试试题
  10. 部分计算机会议和期刊论文的下载方法
  11. 神州数码交换机配置基本命令
  12. Photoshop快速抠图:使用蒙版工具
  13. 截止失真放大电路_基本共射放大电路的特点你懂了吗?
  14. kindle电子书格式转换
  15. Winform:自定义滚动条——可自定义皮肤
  16. html5简单的数字加法效果
  17. Work20230417
  18. 物联网 嵌入式 单片机毕业设计题目100例
  19. YGG SEA与Solana Ventures达成合作,为东南亚的游戏开发注入活力
  20. 中国企业实施ERP之难点全攻略

热门文章

  1. 炎炎夏日需要一个清凉的地 - 自制水冷系统(十一 指尖的思绪之程序篇)
  2. pat-1057 Stack 树状数组+二分查找
  3. mac如何看html5视频播放器,苹果Mac系统看HTML5视频教程介绍
  4. C#多线程时对同一资源加锁实现互斥访问
  5. 3-5 单链表分段逆转 (20 分)
  6. php值对象模式场景,php设计模式介绍之值对象模式第1/5页
  7. java写一个web聊天工具_javaweb写的在线聊天应用
  8. 嵌入式MODEM通迅技术
  9. css3 背景等比例,纯 CSS,不用背景,实现图片等比例展示
  10. 硬件服务器采购指南,硬件组装_服务器采购指南_太平洋电脑网PConline