数据结构⑧ 查找(树)

本文详细介绍了二叉排序树的概念,包括其查找原理和递归实现。讨论了二叉排序树的插入、删除操作,并重点讲述了平衡二叉树的定义和四种平衡调整方法:LL、RR、LR、RL。文章还概述了平衡二叉树的生成原理和保持平衡的策略。
摘要由CSDN通过智能技术生成

目录

二叉排序树

定义

查找

原理

递归实现

分析

操作

插入、生成

删除

平衡二叉树

定义

平衡调整方法

LL

RR

LR

RL

 总结

生成原理


二叉排序树

定义

查找

原理

#include<stdio.h>
#define KeyType int

typedef struct{
	KeyType key;
	int information;
}ElemType;

typedef struct{
	ElemType data;
	struct BSTNode* lchild , *rchild;
}BSTNode , *BSTree;

int main(){
	
	return 0;
}

递归实现

#include<stdio.h>
#define KeyType int

typedef struct{
	KeyType key;
	int information;
}ElemType;

typedef struct{
	ElemType data;
	struct BSTNode* lchild , *rchild;
}BSTNode , *BSTree;

BSTree SearchBST(BSTree T , KeyType key){
	if(T == 0 || key == T->data.key){
		return T;
	}else if(key < T->data.key){
		return SearchBST(T->lchild , key);
	}else{
		return SearchBST(T->rchild , key);
	}
}

分析

操作

插入、生成

删除

(1)被删除的结点是叶子结点:直接删去该结点

         双亲结点相应指针域的值改为“空”

(2)被删除的结点只有左子树或者右子树,用其左子树或者右子树替换它

         双亲结点的相应指针域的值改为“指向被删除结点的左子树或者右子树”

(3)被删除的结点既有左子树,也有右子

 

 

只有一个子女的,拿那个子女补

有左右两个子女的,找右子树中序第一个结点补

平衡二叉树

定义

 

 

平衡调整方法

 

LL

 

RR

 

LR

 

RL

C上升到第一个

A是左孩子,B是右孩子

C左孩子是A右孩子

C右孩子是B左孩子

 总结

直线型(LL,RR)

中间的放最上面

上是左孩子,下是右孩子

折现型

最下的放最上面

生成原理

(1)按二叉排序树放入

(2)算一遍所有结点的平衡因子(BF)

(3)BF绝对值都没超1,成功,重复(1)(2)(3)

                         有超1,结点数最小的那个,划分LL、RR、LR、RL

                                     按对应平衡调整操作操作,使调整后结点的BF都不超过1

                                     重复(1)(2)(3)

讲解视频见:

第13周4--7.3树表的查找9--7.3.2平衡二叉树4--平衡调整方法3--例题_哔哩哔哩_bilibili

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值