手写一个二叉树的添加

public class MyTreeSet<T> {
    private Node root;
    private static class Node<T>{
        T value;
        Node left;
        Node right;
        public Node(T e){
            value=e;
        }

        public boolean addChild(T e){
            Comparable obj= (Comparable) e;
            int result=obj.compareTo(value);
            if (result==0){//数据不允许重复,重复就返回false,表示添加失败
                return false;
            }else if(result<0){
                //e 小于 value 向左侧添加
                if (left==null){
                    left=new Node(e);
                    System.out.println("添加:"+value+"的左侧"+e);
                    return true;
                }else {
                    return left.addChild(e);
                }
            }else {
                //e>value  向右侧添加
                if (right==null){
                    right=new Node(e);
                    System.out.println("添加:"+value+"的右侧"+e);
                    return true;
                }else {
                    return right.addChild(e);
                }
            }
        }
    }
    public boolean add(T e){
        //先检查对象是否能进行大小比较
        if (!(e instanceof Comparable)){
            throw new RuntimeException("无法比较方法大小:"+e);
        }
        if (root==null){
            root=new Node(e);
            System.out.println("添加跟元素:"+e);
            return true;
        }else {
            //先和根元素数据比较大小,如果小就放到右侧
            //Comparable val=(Comparable)e;//转换类型以后就为了调用比较大小的方法
            //obj1.compareTo(obj)2  如果返回0 就表示俩个对象相等
            //如果是正数表示obj1大  如果返回负数obj1小
            //int result = val.compareTo(root.value);
            return root.addChild(e);
        }
    }
}

以下是对手写的二叉树添加进行测试

新建一个测试类

public class text {
    public static void main(String[] args) {

        MyTreeSet<Integer> treeSet=new MyTreeSet<>();
        treeSet.add(680);
        treeSet.add(560);
        treeSet.add(750);
        treeSet.add(520);
    }
}

实现二叉树的实现原理我们只有在debug的时候可以清楚了解到

小编对二叉树进行打桩输出结果如下:

添加跟元素:680
添加:680的左侧560
添加:680的右侧750
添加:560的左侧520

欢迎提出意见供我学习!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ovideooos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值