JAVA实现将数组存入二叉树中

来源:互联网 发布:base64 js 编辑:程序博客网 时间:2024/06/07 09:44

在工作中,当我们面临在使用内存存储数据的时候,只使用hashmap存储,可能会面临内存不足,只能不断扩容的情况下。于是我们可以自己写一些数据结构来存储,譬如二叉树这样的数据结构来存储,这样如果重复的字段只存在一个节点,不同的字段只需要延时叶子节点即可。

下面一起来看看,如何用java实现二叉树的存储结构,下面只是一个简单的例子,如果读者需要使用复杂的结构的话,可以按自己的需要自行实现;


啥也不说了,上代码:

package Tree;import java.util.ArrayList;import java.util.List;/** * Created by ykanghe on 2016/9/7. */public class BinTree {    private int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};    private static List<Node> nodeLIst = new ArrayList<Node>();    private static class Node {        Node leftChild;        Node rightChidl;        int data;        Node(int data) {            this.data = data;        }    }    public void createBintree() {        for (int i = 0; i < array.length; i++) {            nodeLIst.add(new Node(array[i]));        }        if (nodeLIst.size() > 0) {            for (int y = 0; y < array.length / 2 - 1; y++) {                //leftChild                if (null != nodeLIst.get(2 * y + 1)) {                    nodeLIst.get(y).leftChild = nodeLIst.get(2 * y + 1);                }                //rightChild                if (null != nodeLIst.get(2 * y + 2)) {                    nodeLIst.get(y).rightChidl = nodeLIst.get(2 * y + 2);                }            }            //最后一个父节点不一定有孩子            int lastParentIndex = array.length / 2 - 1;            // 左孩子            nodeLIst.get(lastParentIndex).leftChild = nodeLIst                    .get(lastParentIndex * 2 + 1);            //奇数时候有右孩子            if (array.length % 2 == 1) {                nodeLIst.get(lastParentIndex).rightChidl = nodeLIst                        .get(lastParentIndex * 2 + 2);            }        }    }    /**     * 先序遍历     *     * @param node     */    public static void preOrderTraver(Node node) {        if (null != node) {            System.out.println("node:" + node.data);            preOrderTraver(node.leftChild);            preOrderTraver(node.rightChidl);        } else {            return;        }    }    public static void main(String[] args) {        BinTree tree = new BinTree();        tree.createBintree();        preOrderTraver(nodeLIst.get(0));    }}
执行结果:


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的小可爱丢了怎么办 法斗犬老是皮肤病看也看不好怎么办 项链水晶不亮了怎么办 美甲画画手抖怎么办 微信中的表情符号不全怎么办 球球大作战找不到团战服务器怎么办 小孩的腰有点弯怎么办 小朋友不听话被老师罚站怎么办 幼儿园小朋友被老师罚站怎么办 生完小孩弯腰驼背怎么办 小孩爱捡垃圾是怎么办 腰扭了不敢弯腰怎么办 小人狗在背后骂我怎么办 微信表情缺失了怎么办 动图过大 微信 怎么办 我能怎么办图片带字 我该怎么办图片带字 学化妆找不到模特练妆怎么办? cf进房间闪退怎么办 手游cf账号封了怎么办 大门牙缺了一块怎么办 缺了一颗牙齿怎么办 CF购买医疗包竞猜币没到账怎么办 CF手游昵称不合法怎么办 微信gif尺寸过大怎么办 微信表情上限300怎么办 太受欢迎了怎么办快穿 兔宝宝沾上人气味怎么办 我该怎么办的文字图片 爱奇艺缓存视频显示下载失败怎么办 把老公惹生气了怎么办 苹果x用电量太快怎么办 小中考地生没过怎么办 如果遇到不负责的语文老师怎么办 孩子的语文老师教的不好怎么办 刚买的小猫很凶怎么办 2月幼犬不吃东西怎么办 小狗狗不吃狗粮怎么办 母猫不会照顾小猫怎么办 刚买的小狗拉稀怎么办 母兔子吃小兔子怎么办