java链表的数据结构和二叉树的实现

来源:互联网 发布:巨人网络2016财报 编辑:程序博客网 时间:2024/05/17 21:50

链表的算法:
package lian.biao;

public class 链表 {

/** * @param args */public static void main(String[] args) {    // TODO Auto-generated method stub     a a=new a();     a.add(1);     a.add(2);     a.add(3);     a.add(4);     a.output();}

}

//链表储存类
class a{
private node root;//根节点
//链表的插入
public void add(int data){

    if(root!=null){        root.add(data);    }    else{        root=new node(data);    }}public void output(){    if(root!=null){        System.out.println(root.data);        root.output();    }}//链表内部类class node {    private node next;    private int data;    public node(int data){        this.data=data;    }    public void add(int data){        //判断是否为空,调用递归进行添加        if(this.next==null){            next=new node(data);        }        else{            next.add(data);        }    }    public void output(){        //判断是否为空,调用递归进行输出        if(this.next!=null){            System.out.println(next.data);            next.output();        }    }}

}
二叉树的算法:
其实原理和上面一样的,都是采用递归和内部类进行实现的。
算法:
package lian.biao;

public class 二叉树 {

/** * @param args */public static void main(String[] args) {    // TODO Auto-generated method stub     a a=new a();     a.add(4);     a.add(2);     a.add(1);     a.add(3);     a.add(6);     a.add(5);     a.add(7);     a.add(8);     a.output();     System.out.println("");    // a.before();}

}

//二叉树的储存类
class a{
private node root;//根节点
//二叉树的添加
public void add(int data){

    if(root!=null){        root.add(data);    }    else{        root=new node(data);    }}//public void output(){    if(root!=null){    //  System.out.println(root.data);        root.output();    }}//二叉树的内部类class node {    private node left,right;    private int data;    public node(int data){        this.data=data;    }    public void add(int data){        if(data>this.data){            if(right!=null){                right.add(data);            }            else{                right=new node(data);            }        }else if(data<=this.data){            if(left!=null){                left.add(data);            }            else{                left=new node(data);            }        }    }    //二叉树的输出,按照中序遍历(左中右进行输出)    public void output(){        //System.out.print(data+"->");前序遍历        if(left!=null){            left.output();        }        System.out.print(data+"->");//中序遍历        if(right!=null){            right.output();        }        //System.out.print(data+"->");后续遍历    }   }

}
这里写图片描述

1 0
原创粉丝点击