您的位置:首页 > 理论基础 > 数据结构算法

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

2016-07-21 21:13 856 查看
链表的算法:

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+"->");后续遍历
}
}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息