数据结构与算法(四)

数据结构-数组(线性结构)和二叉搜索树(非线性结构)操作

能查找是否具有元素X

能找到最大值和最小值

能插入和删除元素

区别:二叉搜索树的存储结构和数组不一样,二叉搜索树查找效率高于数组

判断以下是否为二叉查找树

 

查找某个元素X

二叉搜索树中最大元素一定是在树的最右分枝的端节点上,一定没有右儿子

二叉搜索树中最小元素一定是在树的最左分枝的端节点上,一定没有左儿子

二叉树的删除

1. 叶节点--直接删除 修改其父节点指针为NULL

2. 只有一个孩子结点的结点--删除该结点,其父节点指向要删除结点的孩子结点

3. 有两个孩子结点的结点--删除该结点,要删除结点的位置用左子树中最大的元素或者右子树中最小的元素替代。

     (左最小、右最大的结点只有一个孩子结点)

平衡二叉树

 

高度 = 深度 - 1

树的高度:从所有叶节点开始数高度到根节点,其中的最大值;也就是从结点x向下到某个叶结点最长简单路径边的条数。

树的深度:树根下中所有分支结点层数最大值,递归定义。(一般以根节点深度层数为1)--即层数

平衡二叉树的调整

不平衡的”发现者“,”麻烦结点“(引起不平衡的结点)被发现的位置称其为 RR/LL/LR/RL插入,需要对应的旋转。

RR旋转

LL旋转 加了Apr

LR旋转 加了Jan 被影响的是May Jan在May的左子树 右分枝...麻烦结点的父结点替换被影响的结点

 

RL旋转 加了Feb 被影响的是Aug Feb在Aug的右子树 左分支..麻烦结点的父结点替换被影响的结点

用数组表示的完全二叉树

特点:任意结点的元素值是其子树的最大值/最小值

最大堆,大顶堆:最大值

最小堆,小顶堆:最小值

最大堆的操作有

创建一个最大堆

判断最大堆是否为空

判断最大堆是否为满

插入一个元素

返回最大元素

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值