二叉搜索树的增删查改

本文详细介绍了二叉搜索树中Insert()和Delete()操作的实现。Insert()函数根据根节点、左子树和右子树进行插入,而Delete()操作涉及删除根节点、左子树和右子树中的目标节点,包括处理不同子节点数量的情况。对于Delete(),删除一个节点可能涉及到替换为子节点,尤其是当节点有两个子节点时,需要找到右子树的最小元素进行替换后再删除。
摘要由CSDN通过智能技术生成
  1. 在实际生产中,一棵二叉搜索树的平均深度是log(N),所以通常是递归的编写二叉树的操作代码,不需要太担心爆栈的问题

  2. 对二叉树的所有操作,无非就是从根节点、左子树、右子树这三者中入手,分析基本的、可能的情况后,再递归的编写相应的操作即可。

  3. 我们的重点放在Insert() 操作和**Delete()**操作中。

Insert()

首先,我们需要先定义Insert()函数,它的作用是将一个新元素添加到BST中,然后返回插入新元素后的BST。

  1. 如何将新元素插入到一棵BST中。我们从根节点、左子树、右子树这三者中入手。
  2. 根节点:根节点为空(为空树),直接将该新元素添加到树中。
  3. 左子树:比根节点小,添加到左子树中。
  4. 右子树:比根节点大,添加到右子树中。
SearchTree
Insert( ElementType X , SearchTree T ){
   
	
	if( NULL==T ){
   
		
		T=( strcut TreeNode* )malloc( sizeof( struct TreeNode ) );
		assert
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值