二叉树:

public class MyTree {
    /*
     * 二叉树
     * 先有根。
     * 数据小的放左子树
     * 数据大的放右子树
     * 
     */
    private int data;//根或者是数据
    private MyTree left;//左子树
    private MyTree right;//右子树

    public MyTree(int i){
        data=i;
    }

    private void add(MyTree tree){
        //若传入的数据比当前的数据小
        if(tree.data<this.data){    
            if(left==null){
                //数据小放左子树
                left=tree;
            }else{
                //否则另外增加一个树
                left.add(tree);
            }
        }else{
            if(right==null){
                //数据大放左子树
                right=tree;
            }else{
                //否则另外增加一个树
                right.add(tree);
            }
        }
    }

    public void show(){
        if(left!=null){
            left.show();
        }
        System.out.println(data);
        if(right!=null){
            right.show();
        }
    }
    public static void main(String[] args) {
        MyTree tree=new MyTree(100);
        tree.add(new MyTree(20));
        tree.add(new MyTree(80));
        tree.add(new MyTree(40));
        tree.add(new MyTree(36));
        tree.show();
    }

多叉树:

public class TreeDemo {
    private List<Node> list=new ArrayList<Node>();
    class Node{
        String data;
        String parent;
    }
    private void add(String parent,String child){
        Node node=new Node();
        node.data=child;
        node.parent=parent;
        list.add(node);
    }
    private void findParent(String child){
        for(int i=0;i<list.size();i++){
            if(list.get(i).data.equals(child)){
                System.out.println("父节点是-->"+list.get(i).parent);
            }
        }
    }
    private void findChild(String parent){
        for(int i=0;i<list.size();i++){
            if(list.get(i).parent.equals(parent)){
                System.out.println("子节点有-->"+list.get(i).data);
            }
        }
    }
    public static void main(String[] args){
        TreeDemo demo=new TreeDemo();
        demo.add("班级", "1班");
        demo.add("班级", "2班");
        demo.add("班级", "3班");
        demo.add("1班", "小黑");
        demo.add("1班", "小黑1");
        demo.add("1班", "小黑2");
        demo.add("2班", "小白1");
        demo.add("2班", "小白2");
        demo.add("3班", "小黄1");
        demo.add("3班", "小黄2");
        demo.findParent("小黑1"); 
        demo.findChild("3班");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值