数据结构复习笔记5.4:二叉排序树

1.前言

之前有讲过一种种特殊的树,就是二叉排序树,下面我将详细说明他们的操作。

2.二叉排序树

        左子树上所有结点的关键字均小于根结点的关键字;右子树上的所有结点的关键字均大于根结点的关键字;左子树和右子树又各是一棵二叉排序树。

        推广一下,只要存在顺序性,例如左子树的关键字都大于根结点的关键字,且右子树的关键字小于根结点,这样也可以称为二叉排序树。以下我们以左<根<右为例。

1.性质

1、如果他的左子树不空,则左⼦树上所有结点的值均⼩于它的根结点的值。

2、若它的右子树不空,则右⼦树上所有结点的值均⼤于它的根结点的值。

3、它的左、右树⼜分为⼆叉排序树。

        很显然,⼆叉排序树的定义是⼀个递归形式的定义,所以对于⼆叉排序树的操作都是基于递归的⼆叉排序树既然名字中带有排序⼆字,这就是它相对于普通⼆叉树的优势所在了。

2.结点结构
typedef struct BSTnode
{
	int data;
	struct BSTnode *l;
	struct BSTnode *r;
}BSTNode,*BSTree;
3.插入操作
//非递归
BSTree insert(BSTree ro, int x)
{
	BSTNode * p = ro;
	BSTNode *pre = NULL;
	while (p != NULL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值