Java实现二叉排序树

Java实现二叉排序树

1.源码如下:

  • BinarySortTree类
package Util;
/*
1.实现二叉排序树
 */
public class BinarySortTree {

    public Node addNode(Node root,int data){
        Node node = new Node(data);
        if(root == null){//第一次插入时,root必为空
            root = node;//让root指向新new出来的node
            return root;
        }
        Node temp = root;
        Node pre = root;
        int flag = -1;//左边为0,右边为1
        while(temp != null){
            if(temp.getData() == data)   return root;//如果相等,则不插入
            else if(temp.getData() > data){//如果当前的值大于插入的值,则遍历左子树
                pre = temp;
                temp = temp.getlChild();
                flag = 0;
            }
            else{
                pre = temp;
               temp = temp.getrChild();//进入右子树
                flag = 1;
            }
        }

        //根据标志决定是往哪个子树添加值
        if(flag == 0)
            pre.setlChild(node);//指向node
        if(flag == 1)
            pre.setrChild(node);
        flag = -1;
        return root;
    }


    //中序遍历
    //对于中序遍历,二叉排序树的输出有序数列
    public void traverseBinarySortTree(Node root){
        if(root.getlChild()!=null)//如果左孩子不为空
            traverseBinarySortTree(root.getlChild());//先遍历左子树
        System.out.println(root.getData());
        if(root.getrChild()!=null)
            traverseBinarySortTree(root.getrChild());
    }
}
  • Node类
package Util;

/**
 * 1.节点类型
 */
class Node{
    private int data;//二叉树中存储的是int型的数字
    private Node lChild = null;//存储左指针【指向左孩子】
    private Node rChild = null;//存储右指针【指向右孩子】

    Node(int data){
        this.data = data;//构造注入 data
    }

    Node(){

    }
    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public Node getlChild() {
        return lChild;
    }

    public void setlChild(Node lChild) {
        this.lChild = lChild;
    }

    public Node getrChild() {
        return rChild;
    }

    public void setrChild(Node rChild) {
        this.rChild = rChild;
    }
}
  • Test类
public class Test{
    public static void main(String[] args) {
        BinarySorTree binarySorTree = new BinarySorTree();

        Node node = null;
        node = binarySorTree.addNode(node,4);
        binarySorTree.addNode(node,2);
        binarySorTree.addNode(node,5);
        binarySorTree.addNode(node, 1);
        binarySorTree.traverseBinarySortTree(node);
    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

说文科技

看书人不妨赏个酒钱?

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

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

打赏作者

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

抵扣说明:

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

余额充值