二叉树 基本概念

import java.util.Arrays;
class Link{
    private class Node{
        private Node right;
        private Node left;
        private Comparable data;
        public Node(Comparable data){
            this.data=data;
        }
        public void addNode(Node node){
            if(this.data.compareTo(node.data)<0){
                if(this.right==null){
                    this.right=node;
                }else{
                    this.right.addNode(node);
                }
            }else{
                if(this.left==null){
                    this.left=node;
                }else{
                    this.left.addNode(node);
                }
            }
        }
        public void toArrayNode(){
            if(this.left!=null){
                this.left.toArrayNode();
            }
            Link.this.reData[Link.this.foot++]=this.data;
            if(this.right!=null){
                this.right.toArrayNode();
            }
        }
    }
    //============================内部类
    private Node root;
    private int count;
    private int foot;
    private Object []reData;
    public void add(Object data){
        if(data==null){
            return;
        }
        Node node=new Node((Comparable<Man>)data);
        if(this.root==null){
            this.root=node;
        }else{
            this.root.addNode(node);
        }count++;
    }
    public Object[]toArray(){
        if(this.root==null){
            return null;
        }
        this.foot=0;
        this.reData=new Object[this.count];
        this.root.toArrayNode();
        return this.reData;
    }
}
//链表类
interface Student{
    public String getName();
    public int getAge();
}
class Person{
    Link l=new Link();
    public void add(Student stu){
        this.l.add(stu);
    }
    public Link toArray(){
        return this.l;
    }
}
class Man implements Student,Comparable<Man>{
    private int age;
    private String name;
    public Man(String name,int age){
        this.name=name;
        this.age=age;
    }
    public int compareTo(Man o) {//覆写comparaTo方法实现按年龄大小排序
        if(this.age>o.age){
            return 1;
        }else if(this.age<o.age){
            return -1;
        }else{
        return 0;
        }   
    }
    @Override
    public String getName() {
        // TODO Auto-generated method stub
        return this.name;
    }

    @Override
    public int getAge() {
        // TODO Auto-generated method stub
        return this.age;
    }
    public String toString(){
        return this.name+" "+this.age+"\n";
    }
}
public class test1 {
    public static void main(String[] args) {
        Link link=new Link();
        int []data=new int[]{
                2,4,6,8,5,3,7
        };
        for(int x=0;x<data.length;x++){
            link.add(data[x]);
        }
        System.out.println(Arrays.toString(link.toArray()));
        //简单二叉树中序遍历
        Person per=new Person();
        per.add(new Man("zhansan",40));
        per.add(new Man("zhansan",30));
        per.add(new Man("zhansan",20));
        Link link1=per.toArray();
        System.out.println(Arrays.toString(link1.toArray()));
        //基本类遍历

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值