二叉查找树--查找、删除、插入(Java实现)

本文介绍了二叉查找树的概念及其性质,并详细阐述了在二叉查找树中查找、插入和删除操作的实现过程,包括对应的Java代码。讨论了删除操作的三种情况,包括删除叶子结点、单子树结点以及双子树结点的情况。
摘要由CSDN通过智能技术生成

        下篇:平衡二叉树

               http://blog.csdn.net/kiritor/article/details/8892648

        二叉查找树

                 二叉查找树(Binary Search Tree),或者是一颗空树,或者是具有下列性质的二叉树:

                       1、若它的左子树不空,则其左子树上的所有结点的值均小于它根结点的值;

                       2、若它的右子树不空,则其右子树上的所有结点的值均大于它根结点的值;

                       3、它的左、右子树也分别为二叉查找树。

                                                  

                 二叉查找树是基于二叉树的,其结点数据结构定义为如下:

 /**结点数据结构*/
 static class BinaryNode<T>
	{
		T data;
		BinaryNode<T> left;
		BinaryNode<T> right;
		public BinaryNode(T data) {
			this(data,null,null);
		}
		public BinaryNode( T data, BinaryNode<T> left, BinaryNode<T> right) {
			this.data =data;
			this.left = left;
			this.right =right;
		}
		public BinaryNode()
		{
			data =null;
			this.left = left;
			this.right =right;
		}
	}

                 现在明白了什么是二叉查找树,那么二叉查找书的基本操作又是如何来实现的呢?                

          查找操作

                       在二叉查找树中查找x的过程如下:

                             1、若二叉树是空树,则查找失败。

                             2、若x等于根结点的数据,则查找成功,否则。

                             3、若x小于根结点的数据,则递归查找其左子树,否则。

                             4、递归查找其右子树。

                     根据上述的步骤,写出其查找操作的代码:

/**查找指定的元素,默认从
    * 根结点出开始查询*/
   public boolean contains(T t)
   {
	  return contains(t, rootTree);
	   
   }
 /**从某个结点出开始查找元素*/
   public boolean contains(T t, BinaryNode<T> node)
   {
      if(node==null)
        return false;//结点为空,查找失败
      int result = t.compareTo(node.data);
       if(result>0)
          return contains(t,node.right);//递归查询右子树
      else if(result<0)
          return contains(t, node.left);//递归查询左子
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值