关闭

使用一维数组存储二叉树--Java版

标签: 二叉树
930人阅读 评论(0) 收藏 举报
分类:

这里写图片描述

package com.datastructure;

/***
 * 需求:使用一维数组存储二叉树
 * 步骤:
 * 1、查看原始数据的个数(8个),从而制定二叉树层级(4层),得到满二叉树节点个数(15个)
 * 2、二叉树节点(15个)为一维数组,全设置为0
 * 3、循环遍历原始数据,第一个值为树根
 * 4、第二个值与父节点比较,如果大于树根,则往右子树比较,如果数组内的值小于或等于树根,则往左子树比较
 * 5、【循环】步骤4,直到形成二叉树
 * 
 * 备注:左节点的坐标等于父节点的坐标*2,右节点的坐标等于父节点的坐标*2+1
 */

import java.io.*;
public class binaryTree{ 

    public static void main(String args[]) throws IOException

       {  
        int i,level;
        int data[]={6,3,5,9,7,8,4,2}; /*原始数组*/
        int btree[]=new int[16];
        for(i=0;i<16;i++) btree[i]=0;
        System.out.print("原始数组内容: \n");
        for(i=0;i<8;i++)
        System.out.print("["+data[i]+"] ");
        System.out.println();
        for(i=0;i<8;i++)                    /*把原始数组中的值逐一对比*/
        {  
            System.out.println("i==>"+i);
            for(level=1;btree[level]!=0;)   /*比较树根及数组内的值*/
            {  
                System.out.println("levele==>"+level+" btree[level]==>"+btree[level]);
                if(data[i]>btree[level])    /*如果数组内的值大于树根,则往右子树比较*/
                    level=level*2+1;
                else                        /*如果数组内的值小于或等于树根,则往左子树比较*/
                    level=level*2;
            }                               /*如果子树节点的值不为0,则再与数组内的值比较一次*/
            btree[level]=data[i];           /*把数组值放入二叉树*/
        }
        System.out.print("二叉树内容:\n");
        for (i=1;i<16;i++)
            System.out.print("["+btree[i]+"] ");
        System.out.print("\n");

       }    
}

这里写图片描述

       如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!

0
0
查看评论

HDU 3791 二叉搜索树(用数组保存树)

判断两序列是否为同一二叉搜索树序列   Input 开始一个数n,(1   Output 如果序列相同则输出YES,否则输出NO   Sample Input 2 567432 543267 576342...
  • u013555159
  • u013555159
  • 2016-07-26 09:27
  • 532

二叉树的一维数组存储

思路很简单,根放在0位置,以后假定当前位置是i,那么左子结点在2i+1,右子结点在2i+2。 比如根的左子结点在1,右子结点在2。结点1的左子结点在3,右子结点在4。 定义一种空值表示没有子结点,比如empty。  假定一个结点由3个成员组成:value, left, right 数...
  • llwwlql
  • llwwlql
  • 2015-04-10 18:58
  • 2077

数组顺序存储二叉树

1.完全二叉树    完全二叉树由于其结构上的特点,通常采用顺序存储方式存储。一棵有n个结点的完全二叉树的所有结点从1到n编号,就得到结点的一个线性系列。    如下图:完全二叉树除最下面一层外,各层都被结点充满了,每一...
  • jethai
  • jethai
  • 2016-08-28 13:58
  • 1136

二叉树数组存储

二叉树顺序存储的数组遍历,递归遍历 #include <iostream> #include <cstring> using namespace std; class BiTree { public: BiTree(); ~BiTre...
  • qq_32228189
  • qq_32228189
  • 2016-11-04 23:08
  • 481

使用一维数组存储二叉树--Java版

package com.datastructure;/*** * 需求:使用一维数组存储二叉树 * 步骤: * 1、查看原始数据的个数(8个),从而制定二叉树层级(4层),得到满二叉树节点个数(15个) * 2、二叉树节点(15个)为一维数组,全设置为0 * 3、循环遍历原始数据,第一个值...
  • silentwolfyh
  • silentwolfyh
  • 2017-08-09 08:51
  • 930

平衡二叉树调整

两篇资料,来自网络。 第一篇:地址:http://www.cnblogs.com/guyan/archive/2012/09/03/2668399.html 平衡二叉树的插入旋转 平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超...
  • harvic880925
  • harvic880925
  • 2013-09-11 10:48
  • 9032

数据结构之---C语言实现二叉树的顺序存储

数据结构之---C语言实现二叉树的顺序存储
  • u012965373
  • u012965373
  • 2015-06-09 00:14
  • 2663

二叉树的二叉链表存储(java实现)

package com.fcy.dataStruct; /** * 二叉树的二叉链表存储的是数据域、左子节点和右子节点 */ class TwoLinkBinTree{ public static class TreeNode{ //数据域 Object data; //左子节点...
  • fcytxdy
  • fcytxdy
  • 2014-09-07 21:09
  • 1251

平衡二叉树实现的实例

之前谈过平衡二叉树的实现原理,详见http://blog.csdn.net/wxbmelisky/article/details/47755753,下述实例的实现过程依此为据。 现在通过实例来分析平衡二叉树的实现过程,以便更好的理解。 选取一组数据分别为2,1,0,3,4,5,6,9,8,7的1...
  • wxbmelisky
  • wxbmelisky
  • 2015-08-19 21:11
  • 2725

平衡二叉树详解

平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都...
  • u010442302
  • u010442302
  • 2016-09-30 20:47
  • 10314
    【个人简介】
    姓名:余辉

    地点:北京昌平

    学历:中科院硕士

    QQ :348835027

    微信:silentwolfyh

    我的新书【点击图片】
    (京东)(天猫)(当当)

    本书QQ群:275243793
    个人资料
    • 访问:510663次
    • 积分:7841
    • 等级:
    • 排名:第3188名
    • 原创:286篇
    • 转载:23篇
    • 译文:24篇
    • 评论:95条
    博客专栏