顺序二叉树(基于数组存储树结点)
从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看下面的示意图。
顺序二叉树有两个要求:
- 1.上图的二叉树结点,以数组的方式来存放
- 2.要求在遍历数组时,仍然可以以前序、中序、后序的方式完成节点的遍历
顺序二叉树的特点:
- 1.顺序二叉树通常只考虑完全二叉树
- 2.第n个元素的左子节点为2*n+1
- 3.第n个元素的右子节点为2*n+2
- 4.第n个元素的父节点为(n一1)/2
- 5.n:表示二叉树中的第几个元素(按0开始编号 如图所示)
代码实现:
public class ArrBinaryTreeDemo {public static void main(String[] args) {int[] arr = { 1, 2, 3, 4, 5, 6, 7 };//创建一个 ArrBinaryTreeArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);arrBinaryTree.preOrder(); // 1,2,4,5,3,6,7}
}
//编写一个ArrayBinaryTree, 实现顺序存储二叉树遍历
class ArrBinaryTree {private int[] arr;//存储数据结点的数组public ArrBinaryTree(int[] arr) {this.arr = arr;}//重载preOrderpublic void preOrder() {this.preOrder(0);}//编写一个方法,完成顺序存储二叉树的前序遍历/*** @param index 数组的下标*/public void preOrder(int index) {//如果数组为空,或者 arr.length = 0if(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);}}
}
顺序二叉树(基于数组存储树结点)相关推荐
- 线索二叉树(基于链表存储树结点)
有以下场景 如果使用中序遍历,那么得到的顺序是:HDIBEAFCG,可以得知A的前驱结点为E,后继结点为F.但是,这种关系的获得是建立在完成遍历后得到的.如果我们每次想得到某个节点的前驱或者后继,都要 ...
- 顺序二叉树---实现数组的二叉树前序遍历输出
特点: 1.顺序二叉树只考虑完全二叉树 2.第n个元素的左子节点为2*n+1 3.第n个元素的右子节点为2*n+2 4.第n个元素的父节点为(n-1)/2 代码: /** 给你一个数组,要求以二叉树前 ...
- DS二叉树--二叉树之数组存储
二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示.,如下图所示 从上图可以看出,右边的是 ...
- Python数据结构之树形结构——数组存储
Python数据结构之树形结构--数组存储 树:一种非线性结构,主要使用链表来存储,也可以使用数组存储. 本代码使用两种数组 元素数组:0,6,3,5,4,7,8,9,2 由于 0 索引不存储元素,所 ...
- Java数据结构与算法---栈(数组存储)
今天用Java实现了数据结构中的栈,学会了操纵栈的一系列方法.关于栈的相关内容这里不做介绍,我只是将自己实现的代码分享出来,记录自己的学习进度同时希望能对其他朋友具有借鉴作用. 以下是用数组存储实现栈 ...
- 有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...
作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...
- 二叉树的存储方式【顺序储存(数组)、链式存储、邻接表存储等】
其他二叉树知识!二叉树知识汇总 目录 前言: 1.顺序存储结构 2.链式存储结构 3.二维数组直接存储 4.邻接表存储 前言: 顺序存储和链式存储是经典讲解的内容,本文做简单理论介绍,而对于后两种:二 ...
- 大话数据结构13:二叉树 数组存储
基础介绍 对于完全二叉树 父节点位置与子节点位置 i 与 2*i +1 前序遍历 打印函数在前 中序遍历 打印函数在中 后序遍历 打印函数在后 #include "stdio.h" ...
- 简单实现并查集(基于数组和基于树)
并查集: 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中.这一类问题近几 ...
最新文章
- 清华浙大年度学生最高奖,都颁向量子物理
- 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
- [LibTorch Linux] 各版本 LibTorch 下载
- java hadoop makefile_makefile高级用法--make 的运行
- C语言-用指针实现内存动态分配
- Install and Use SourceMonitor in Windows7
- linux内核态删除文件函数,初探Linux内核态——通过proc文件系统作快速问题定位...
- python创意小作品代码-超全代码详解 Python 制作精美炫酷图表教程
- 基于Web在线考试系统的设计与实现
- 【python中级】 ico图标生成器
- 修改 QQ 任务栏托盘区小图标和等级图标
- 有没有集工作记录、项目时间线于一身的便签软件?
- hiber+spring继续找bug
- 数据结构(1)—— 数据结构的三大结构
- Solr Replication
- Lua热更原理以及加载规则
- 白大脑比超级计算机还,巨金怪 - 神奇宝贝百科,关于宝可梦的百科全书
- AnyConnect苹果IOS系统Iphone手机的设置教程
- 安卓 自定义吐司样式 ,适配Android Pie
- 使用ResNet18实现CIFAR10数据集的训练