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

链表的算法:
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+"->");后续遍历
    }   
}

}
java链表的数据结构和二叉树的实现_第1张图片

你可能感兴趣的:(编程)