查找之二叉排序树

定义

二叉排序树,又叫二叉查找树。它是满足以下特殊性质的二叉树。

二叉排序树或者是一颗空树,或者是具有如下性质的二叉树

  • 若它的左子树不为空,则左子树上所有节点的值小于根节点的值
  • 若它的右子树不为空,则右子树上所有节点的值大于根节点的值
  • 它的左子树和右子树分别都是二叉排序树

看过二叉排序树的定义,我们在看如何创建二叉排序树

插入

二叉排序树不允许有重复的值,所以这里我们不讨论有重复的值的情况。首先判断二叉排序树是否为空树,若是空树,直接作为根节点进行插入;若不是空树,新插入的节点必作为一个叶子节点,其插入位置由查找不成功的位置确定。即若小于根节点的值,则递归的在左子树插入,否则递归的在右子树插入
现有一关键字的输入顺序如下:

1,3,2,5,6,创建二叉排序树的过程如下

这里写图片描述

    public static TreeNode  insert(TreeNode node,int value){
        if(node==null){
            node=new TreeNode();
            node.value=value;
            node.leftChild=null;
            node.rightChild=null;
        }else if(value<node.value){
            node.leftChild=insert(node.leftChild, value);
        }else if(value>node.value){
            node.rightChild=insert(node.rightChild, value);
        }
        return node;
    }

二叉排序树的创建就是多次调用插入函数

    public static TreeNode create(){
        System.out.println("请输入节点值:");
        TreeNode node=null;
        @SuppressWarnings("resource")
        Scanner input=new Scanner(System.in);
        int value=input.nextInt();
        while(value!=-1){
            node=insert(node, value);
            value=input.nextInt();
        }
        return node;
    }

查找

根据二叉排序树的定义,我们可以递归的进行查找。具体思想:如果二叉树为空,则直接返回空;否则,二叉树的根节点的值等于待查找的值,返回根节点;否则若果待查找的值小于二叉树的根节点,则在其左子树上递归查找;若待查找的值大于二叉树的根节点,则在其右子树上递归查找。

    public  static TreeNode search(TreeNode node,int value){
        if(node==null){
            return null;
        }else if(node.value==value){
            return node;
        }else if(value<node.value){
            return search(node.leftChild, value);
        }else{
            return search(node.rightChild, value);
        }
    }

总结

  1. 二叉排序树不允许有重复值
  2. 二叉排序树的中序遍历是一个递增序列

结果展示

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值