ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

树结构之顺序存储二叉树

2020-01-31 17:42:38  阅读:229  来源: 互联网

标签:arr 树结构 int SeqStoreTree seqStoreTree 二叉树 数组 顺序存储


从数据存储来看,数组存储方式的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。

顺序存储二叉树特点

(1)顺序二叉树通常只考虑完全二叉树

(2)第n个元素的左子节点为  2 * n + 1

(3)第n个元素的右子节点为  2 * n + 2

(4)第n个元素的父节点为  (n-1) / 2

(5)n : 表示二叉树中的第几个元素(按0开始编号)

 

例子:给定数组 {1,2,3,4,5,6,7},使用树的遍历方式遍历数组

public static void main(String[] args) {
    int[] arr={1,2,3,4,5,6,7};
    SeqStoreTree seqStoreTree=new SeqStoreTree(arr);
    seqStoreTree.prePrint(0);//1,2,4,5,3,6,7
    seqStoreTree.midPrint(0);//4,2,5,1,6,3,7
    seqStoreTree.postPrint(0);//4,5,2,6,7,3,1
}
static class SeqStoreTree{
    private int[] arr;
    public SeqStoreTree(int[] arr){
        this.arr=arr;
    }
    //前序遍历
    public void prePrint(int index){
        if(this.arr==null||index<0){
            System.out.println("数组为空");
            return;
        }
        System.out.println(arr[index]);
        //递归遍历左节点
        if(2*index+1<arr.length){
            prePrint(2*index+1);
        }
        //递归遍历右节点
        if(2*index+2<arr.length){
            prePrint(2*index+2);
        }
    }
    //中序遍历
    public void midPrint(int index){
        if(this.arr==null||index<0){
            System.out.println("数组为空");
            return;
        }
        //递归遍历左节点
        if(2*index+1<arr.length){
            midPrint(2*index+1);
        }
        System.out.println(arr[index]);
        //递归遍历右节点
        if(2*index+2<arr.length){
            midPrint(2*index+2);
        }
    }
    //后序遍历
    public void postPrint(int index){
        if(this.arr==null||index<0){
            System.out.println("数组为空");
            return;
        }
        //遍历左节点
        if(2*index+1<arr.length){
            postPrint(2*index+1);
        }
        //遍历右节点
        if(2*index+2<arr.length){
            postPrint(2*index+2);
        }
        System.out.println(arr[index]);
    }
}
zuodaoyong 发布了66 篇原创文章 · 获赞 2 · 访问量 3138 私信 关注

标签:arr,树结构,int,SeqStoreTree,seqStoreTree,二叉树,数组,顺序存储
来源: https://blog.csdn.net/zuodaoyong/article/details/104125482

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有