二叉查找树的基本操作

二叉查找树的基本操作有查找、插入、建树、删除

查找操作

 

在之前介绍的二叉树的查找操作时,由于无法确定二叉树的具体特性,因此只能对左右子树都进行递归遍历,但是二叉查找树的性质决定了可以只选择其中的一种进行遍历,因此查找将会是从树根到查找结点的一条路径,故最坏复杂度为O(h),其中h是二叉查找树的高度,于是可以得到查找操作的基本思路

  1. 如果当前根结点root为空,说明查找失败,返回
  2. 如果需要查找的值x等于当前根结点的数据域root->data,说明查找成功,访问
  3. 如果需要查找的值x小于当前根结点的数据域root->data,说明应该在左子树中查找,因此向root->lchild递归
  4. 如果需要查找的值x大于当前根结点的数据域root->data,说明应该在右子树中查找,因此向root->rchild递归

由此可以得到代码:

void search(node *root,int x){
	if(root==NULL){
		printf("search failed\n");
		return;
	}
	if(x==root->data){
		printf("%d\n",root->data);
	}else if(x<root->data){
		search(root->lchild,x);
	}else{
		search(root->rchild,x);
	}
}

可以看到,和普通二叉树的查找函数不同,二叉查找树的查找在于对左右子树的选择递归。在普通二叉树中,无法确定需要查找的值x到底是在左子树还是在右子树上,但

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值