美文网首页
顺序存储二叉树

顺序存储二叉树

作者: 乙腾 | 来源:发表于2020-11-06 22:45 被阅读0次

Overview

顺序存储二叉树,是由数组转换成的二叉树,一个元素为数组的二叉树。

提供了数组转换成二叉树的思路

基本说明

image.png

要求

将arr:[1,2,3,4,5,6,7]转换为二叉树,并能够前序,中序,后序查找。


image.png

顺序存储二叉树的特点

image.png

notice:

这里n指的是数组中的索引,左右子节点公式计算的是对应数组的索引,而不是具体的数组的值。

比如3的左子节点:

3的index=2,

那么其左子节点索引为:

5,即对应数组arr[5]=6

右子节点索引:

6,即arr[6]=7

code

ArrayBinaryTree

package com.pl.arithmetic.arrayBinaryTree;

/**
 * <p>
 *
 * @Description: 数组二叉树,顺序二叉树
 * </p>
 * @ClassName ArrayBinaryTree
 * @Author pl
 * @Date 2020/11/6
 * @Version V1.0.0
 */
public class ArrayBinaryTree {
    private int arr[];

    public ArrayBinaryTree(int[] arr) {
        this.arr = arr;
    }

    public void preOrder(){
        preOrder(0);
    }

    /**
     * 前序遍历
     *
     * @param index 数组索引,角标
     * @return void
     * @exception
     * @author silenter
     * @date 2020/11/6 21:57
    */
    public void preOrder(int index){
        //@1 先判断是否数组越界 和数组是否为空
        if (index>arr.length){
            System.out.println("无此节点");
            return;
        }
        if (arr==null && arr.length == 0){
            System.out.println("数组为空");
            return;
        }
        System.out.println(arr[index]);
        //数组角标和数组大小永远是小于关系
        //@2 左子树
        if (index*2+1<arr.length){
            preOrder(index*2+1);
        }
        //@3 右子树
        if (index*2+2<arr.length){
            preOrder(index*2+2);
        }

    }
}

ArrBinaryTreeDemo

package com.pl.arithmetic.arrayBinaryTree;

/**
 * <p>
 *
 * @Description: TODO
 * </p>
 * @ClassName ArrBinaryTreeDemo
 * @Author pl
 * @Date 2020/11/6
 * @Version V1.0.0
 */
public class ArrBinaryTreeDemo {

    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5, 6, 7 };
        //创建一个 ArrBinaryTree
        ArrayBinaryTree arrBinaryTree = new ArrayBinaryTree(arr);
        arrBinaryTree.preOrder(); // 1,2,4,5,3,6,7
    }
}

输出


image.png

相关文章

  • 四、树与二叉树

    四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...

  • 常用数据结构

    一、序列 数组:顺序存储,随机访问 链表:链表存储,顺序访问 栈 队列 串 二、树 1)二叉树 2)遍历二叉树 前...

  • Java二叉树的遍历思想及核心代码实现

    二叉树在计算机中的存储方式往往线性结构,线性存储分为顺序存储和链式存储,将二叉树按层序编号。 顺序结构:按编号的顺...

  • 二叉树

    定义 斜树 完美二叉树 完全二叉树 存储结构 顺序存储结构 二叉链表 二叉...

  • 数据结构与算法分析四 树(续)

    ** 顺序存储 ** 线索化二叉树 线索化代码实现

  • 三、二叉树的存储结构

    一、顺序存储结构 我们顺序的存储这个二叉树的数据: 我们针对图中的树可以得出这样的关系,但是这仅针对于完全二叉树,...

  • 数据结构重学日记(十七)二叉树的存储结构

    二叉树的存储结构也包括顺序存储和链式存储 顺序存储 就是用一组地址连续的存储单元依次自上而下,自左至右存储完全二叉...

  • 二叉树的存储及遍历

    一、二叉树顺序存储实现: 1.存储结构:(数组)···/* 0号单元存储根结点 */typedef CElemT...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 数据结构课程 第七周 树和二叉树

    定义 基本术语 与线性结构比较 二叉树 二叉树抽象数据类型定义 二叉树性质和存储结构 特殊形式二叉树(顺序存储时可...

网友评论

      本文标题:顺序存储二叉树

      本文链接:https://www.haomeiwen.com/subject/czmxbktx.html