当前位置: 代码网 > it编程>软件设计>数据结构 > 顺序存储二叉树

顺序存储二叉树

2024年07月28日 数据结构 我要评论
数据结构、算法之顺序存储二叉树

顺序存储二叉树:

  1. 二叉树的顺序存储结构是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系

  2. 考虑对存储空间的浪费,顺序存储结构一般只适用于完全二叉树

  3. 关系:
    3.1 第n个元素的左子结点为 2 * n + 1
    3.2第n个元素的右子结点为 2 * n + 2
    3.3第n个元素的父节点为 (n-1)/ 2
    3.4n:表示二叉树中的第几个元素(按0开始编号)

  4. 应用:八大排序算法中的堆排序中会使用到顺序存储二叉树

代码实现

public class arrbinarytreedemo {
    int[] arr;

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

    /**
     * 方法重载preorder,这样就不要反复输入0
     */
    public void preorder(){
        this.preorder(0);
    }

    /**
     * 完成对顺序存储二叉树的前序遍历
     * @param index 数组下标
     */
    public void preorder(int index){
        //前序遍历应该先输出根节点,之后再进行递归
        system.out.println(arr[index]);
        //左,注意只要涉及到数组的index,都要进行判断是否越界。否则很容易出现index out of bounds exception
        if ((index * 2 + 1) < arr.length){
            this.preorder(2 * index + 1); //输入了这个数组下标,就要判断这个下标是否越界
        }
        //右
        if ((index*2+2) < arr.length){
            this.preorder(2 * index + 2);
        }

    }
    /**
     * 完成对顺序存储二叉树的中序遍历
     * @param index 数组下标
     */
    public void infixorder(int index){

        //左,注意只要涉及到数组的index,都要进行判断是否越界。否则很容易出现index out of bounds exception
        if ((index * 2 + 1) < arr.length){
            this.preorder(2 * index + 1); //输入了这个数组下标,就要判断这个下标是否越界
        }
        //根
        system.out.println(arr[index]);

        //右
        if ((index*2+2) < arr.length){
            this.preorder(2 * index + 2);
        }
    }

    public static void main(string[] args) {
        int[] arr = {1,2,3,4,5,6,7};
        arrbinarytreedemo arrbinarytreedemo = new arrbinarytreedemo(arr);
        arrbinarytreedemo.preorder();

    }
}
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com