数据结构知识点理解及整理

数据结构知识点整理

看数据结构相关知识时,对数据结构的一些知识以自己的想法做了一个整理。

栈是只在一个位置上进行插入和删除的表,该位置在表的末端,叫做栈顶。
栈是先入后出的,对栈的基本操作有入栈(push)和出栈(pop),前者相当于插入,后者相当于删除。
在这里插入图片描述

队列

队列是特殊的线性表,在该表中只允许在表的前端(font)执行删除操作,在表的的末端(rear)进行插入操作。
在这里插入图片描述

链表

链表是一种数据结构,和数组是同级的。链表在进行循环遍历时效率不高,但是插入和删除时更有优势。

散列表(Hash table)

散列表是一种查找算法,散列表算法在查找时不需要进行一系列的关键字进行标识数据的比较操作。
散列表算法是想要做到不进行任何比较操作,通过一次存取就可以得到所查找的数据元素,
因此必须在数据元素的存储位置和它的关键字之间建立一个确定的对应关系,
使每个关键字和散列表中一个唯一的存储位置相对应。因此只要找到这个对应关系找到给定的关键字
在散列表中的位置即可。这种对应关系叫做散列函数。

排序二叉树

如果普通的二叉树每个节点满足:左子树所有节点值小于它的根节点值,且右子树所有节点值大于它的根节点,这样的二叉树叫做排序二叉树。

对排序二叉树进行插入操作:
首先从根节点查找自己的位置,流程为:新节点与当前节点比较如果相同则表中已经存在不能再插入,如果小于当前节点则在左子树中寻找,若左子树为空,则当前节点就是新节点要找的位置,新节点插入到当前位置。如果大于当前节点则在右子树中寻找,如果右子树为空,则插入到当前节点的右子树位置。

对二叉树进行删除操作:
删除二叉树有三种情况,
一、删除的节点无子节点。
二、删除的节点有一个子节点。
三、删除的节点有两个子节点。(
1、删除的节点无子节点:直接删除该节点。
2、删除的节点有一个子节点:将子节点替换到删除的节点。
3、删除的节点有两个子节点:首先找到该节点的替换节点(即右子树中最小的节点),将右子树中最小的节点替换到将要被删除的节点位置,最后删除节点。)

对二叉树进行查询操作:
先和根节点进行比较,若相同则返回,若小于根节点则在左子树中递归查找,若大于根节点,则在右子树中递归查找。

红黑树

一种特殊的二叉树,每个节点都存储位表示节点的颜色,可以使红色或黑色。
特点:
1、每个节点是黑色或者红色。
2、根节点是黑色。
3、每个叶子结点是黑色(叶子节点指为空的叶子节点)
4、如果一个节点为红色,则它的子节点必须为黑色。
5、从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
红黑树的左旋:
若对节点X左旋,则将节点X变为一个左节点。(此时X的父节点为X的右节点)
在这里插入图片描述
红黑树的右旋:
若对节点X右旋,则将节点X变为一个右节点(此时X的父节点为X的左节点)
在这里插入图片描述
红黑树的添加:
1、将红黑树作为二叉树进行插入节点。
2、将插入的节点着色为红色。
(1:若被插入的节点为根节点则把该节点涂黑色,2:被插入的节点的父节点为红色,则什么也不用做。
3:被插入的节点的父节点为红色,此时被插入的节点一定存在非空叔叔节点,此时再分为三种情况)
在这里插入图片描述
红黑树的删除:
一、将红黑树作为二叉树删除节点
此时分为是三种情况:1、该节点无子节点,直接删除该节点。
2、该节点有一个子节点,删除该节点让子节点代替该节点。
3、该节点有两个子节点,首先找到该节点的替换节点(右子树中最小的节点),将右子树中最小的节点替换到将要被删除的节点位置,然后删除节点。
二、通过旋转和重新着色修正该树,使之成为一颗红黑树。
重新着色有三种情况:1、X是“红+黑”节点:把X设为黑色,结束。
2、X是“黑+黑”节点,且X是根:什么也不用做
3、X是“黑+黑”节点,且X不根:此时分为四种情况。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值