数据结构——浙大网易云课堂记录(一)树(中篇)

浙江大学陈越教授数据结构课件精华版 数据结构是计算机中存储和组织数据的方式,它决定了数据的逻辑结构和存储结构。根据数据间的关系,数据结构可以分为两大类:数组是有限数量的、相同类型的数据项的集合,通过索引进行访问。数组中的每个数据项称为元素,数组的大小或容量是固定的,并在创建时确定。数组在内存中是连续存储的,这使得它们在内存管理上相对简单。// 例如,C语言中声明一个整数数组:在上面的代码示例中,声明了一个能够存放10个整数的数组,所有元素初始化为0。链表中的每个节点是独立的内存块,通过指针连接。 阅读详情

二叉搜索树

利用二叉树搜索树(BST,Binary Search Tree),提高查找效率。设左儿子的节点值<父节点值<右儿子节点值,在树中搜索X,每遇到一个节点,将X 的值和节点值做比较,若X 较小,去左子树继续查找;若X 较大,去右子树继续查找;直至全部节点比较完毕或查找到元素。

查找操作Find
Position Find(ElementType X, BinTree BST){
    if(!BST) return NULL; // 查找失败
    if(X < BST -> Data){
        return Find(BST -> Left);
    }else if(X > BST -> Data){
        return Find(BST -> Right);
    }else{
        return BST; // BST -> Data == X
    }
}

上述方法中有尾递归,即递归的调用出现在函数末尾,本例是在return 语句。可以将尾递归函数更改为迭代函数。

Position IterFind(ElementType X, BinTree BST) {
    while(BST) {
        if(X < BST -> Data){
            BST = BST -> Left;
        }else if(X > BST -> Right){
            BST = BST -> Right;
        }else{
            return BST;
        }
    }
    return NULL; // 查找失败
}

如果树“不平衡”,比如所有节点没有右儿子,那么N 个节点构成的数的深度是N-1,此时查找次数达不到理想的log(N)。

插入操作Insert
  1. 如果树空,新建节点,给新节点赋值,返回指向该新节点的指针。
  2. 如果插入值比根节点小,去左子树插值。
  3. 如果插入值比根节点大,去右子树插值。
BinTree Insert(ElementType X, BinTree BST){
    if(!BST){
        BST = malloc(sizeof(struct TreeNode));
        BST -> Data = X;
        BST ->left = NULL;
        BST -> Right = NULL;
    }else if(X < BST -> Data){
        BST -> Left = Insert(X, BST -> Left);
    }else(X > BST -> Data){
        BST -> Right= Insert(X, BST -> Right);
    }
    return BST;
}

这个函数和搜索有点像,但是多了一个返回值。返回的节点会被赋给父节点的左儿子或右儿子,继而,更新过后(已经插入新节点)的子树会“连”回根节点,一层层向上……

删除操作Delete
  1. 查找到该元素
  2. 分情况
    1.被删的节点是叶节点,直接让它的父节点指向它的指针为null
    2.被删的节点只有一个儿子,,让它的父节点指向它的儿子
    3.被删的节点左右子树都非空,转化为第二种情况:在左子树中找到最大值(没有右儿子)或在右子树中找到最小值(没有左儿子),用最值节点代替被删节点,然后删除最值节点。

平衡二叉树

树的形状影响搜索效率。
定义平衡因子(Balance Factor,BF):BF(T) = hL - hR,其中hL、hR 分别是左右子树高度。
平衡二叉树(Balanced Binary Tree,AVL Tree):
空树,或者
对任一节点,有|BT(T)| <= 1。

平衡二叉树高度

节点数为n,最大高度O(logn),证明:利用斐波那契数列。

平衡二叉树的调整
RR旋转
LL旋转
LR旋转
RL旋转
浙江大学数据结构和算法课件和源程序 内容如下: ├─程序例子 │ │ Gauss.cpp │ │ MOVE.C │ │ RUIYUE_3.C │ │ RUIYUE_4.C │ │ │ ├─1概述 │ │ bb_sort.cpp │ │ ex1-9.cpp │ │ ex1-91.cpp │ │ │ ├─2线性表 │ │ ex2-11.cpp │ │ ex2-11new.cpp │ │ linklist.cpp │ │ linklist.h │ │ LINKQUEU.C │ │ linkqueue.cpp │ │ linkqueue.h │ │ list.c │ │ LIST2.C │ │ LIST_S15.C │ │ LIST_SL.C │ │ LIST_SQ.C │ │ LIST_SQ5.C │ │ new2-11.cpp │ │ old2-11.cpp │ │ SQLIST.C │ │ Sqlist.cpp │ │ UNION.CPP │ │ │ ├─3堆栈与队列 │ │ bank_simulation.cpp │ │ conversion.cpp │ │ DMXSTACK.C │ │ hanoi.cpp │ │ MAZE.CPP │ │ QUEUE09.C │ │ SQQUEUE.C │ │ Sqqueue.cpp │ │ sqstack.cpp │ │ stack.c │ │ STK_9.C │ │ 表达式求值.cpp │ │ │ ├─5数组 │ │ array.c │ │ array_ex.cpp │ │ array_test.cpp │ │ DK1.c │ │ DK2.c │ │ SANYANZU.C │ │ │ └─6树 │ bitree.cpp │ BITREE11.C │ bitree2.cpp │ BITREE23.C │ BITREE9.C │ Create_bitree.c │ inorder_thr_tree.cpp │ intreading.cpp │ TING6.C │ TRAVERSE.C │ └─课件 sjjg答疑.txt 数据结构1概述.ppt 数据结构2线性表1.ppt 数据结构3线性表2.ppt 数据结构4堆栈与队列1.ppt 数据结构5堆栈与队列2.ppt 数据结构6串.ppt 数据结构7数组1.ppt 数据结构8数组2.ppt 数据结构9树1.ppt 数据结构A树2.ppt 数据结构B树3.ppt 数据结构C图1.ppt 数据结构D图2.ppt 数据结构E查找.ppt 数据结构F排序.ppt 数据结构文稿14.ppt 立即下载

相关推荐

浙江大学数据结构PPT

浙江大学考研数据结构2010年辅导。 比较适合考研......

数据结构——浙大网易云课堂记录(一)树(上篇)

前菜:查找 顺序查找 二分查找 二分查找判定树 树的一些概念 树的表示 课后题 二叉树 几种特殊二叉树 二叉树性质 二叉树存储结构 二叉树的递归遍历(以链式存储为例) 先序遍历 中序遍历 后序遍历 递归遍历时候的路径 二叉树的非递归遍历 中序遍历 先序遍历 后续遍历 层序遍历 遍历二叉树的应用 输出叶子节点 求二叉树的高度 由两种遍历序列确定二叉树 ...

扬扬羊的博客 2868

浙大 数据结构与算法60讲 网盘地址

浙大 数据结构与算法60讲 网盘地址,保证完整,好用。

数据结构(浙大慕课):二叉树

【代码】数据结构:二叉树笔记。

weixin_45939751的博客 278

浙江大学高级数据结构课件(全)

不错的课件,让我学到了不少知识。可以了解一下

浙江大学数据结构

即使解决一个非常简单的问题,往往也有多种方法,且不同方法之间的效率可能相差甚远 解决问题方法的效率 跟数据的组织方式有关(如例1.1) 跟空间的利用效率有关(如例1.2) 跟算法的巧妙程度有关(如例1.3)

网易云课堂 浙江大学-陈越、何钦铭-数据结构基础习题集(自测)

题目链接:http://www.patest.cn/contests/mooc-ds 【打印沙漏】 #include <iostream> #include <algorithm> #include <cstdio> using namespace std; int num[1000]; int main(){ num[1]=1; int s...

weixin_30426065的博客 355

逆向实战:喜马拉雅新版xm-sign算法解析与本地化生成方案

本文深入解析了喜马拉雅新版xm-sign算法的逆向过程与本地化生成方案。通过详细拆解browserid和sessionid的生成机制,提供了基于Node.js的核心代码实现,帮助开发者在不依赖官方环境的情况下生成有效签名。文章还涵盖了参数获取技巧、常见问题排查及性能优化建议,为爬虫开发者提供了实用的技术参考。

weixin_29256771的博客 299

数据结构(浙江大学)——第一讲 基本概念(一)

什么是数据结构

weixin_50132000的博客 473

RISC-V详细介绍

文章目录写在前面什么是RISC-VRISC-V诞生的背景ISA霸权摩尔定律的穷途末路穷困潦倒的学者不断增长的指令数量RISC-V架构设计思想如何设计一个好的ISARISC-V之RV32I四个典型特点RISC-V之乘除法指令指令格式用乘法代替常数除法RISC-V之RV64RISC-V的特权架构机器模式监管者模式 写在前面 本文主要基于RISC-V中文手册,其中包括但不限于一些网络的资料。本文版权属于skywf,转载或借用请联系作者。 什么是RISC-V RISC-V(发音为“risk-five”)是一个基于

skywf的博客 3万+

鸿蒙平板PC应用开发:在termux中安装ubuntu

打开AVNC点击右上角的设置图标,然后点击 输入 , 点击手势栏目中的 单指轻扫 ,选择滚动远程内容

DMZDAMS的博客 5201

PAT数据结构陈越——自测04

最近在看网易云课堂的浙大数据结构公开课视频。跟着做了一些基础的习题。这是其中一道。 题目如下:00-自测4. Have Fun with Numbers (20)时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Notice that the number 123456789 is a 9-di

smtctc的专栏 1286

如何实现MCGS与S7-200SMART PLC以太网多台通信控制?

第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。

u010670857的博客 6718

数据结构学习笔记:什么是算法?

学习浙大陈越老师数据结构课程,将重点PPT纪录在此,完整ppt见https://mooc.study.163.com/learn/1000033001?tid=2001462004#/learn/content?type=detail&amp;id=2001778302&amp;cid=2001783591。  ...

kkkkkiko的博客 345

告别IIS折腾!用.NET8+Kestrel在Windows上5分钟搞定Web API部署

本文介绍了如何使用.NET8和Kestrel在Windows上快速部署Web API,告别繁琐的IIS配置。通过5分钟实战教程,开发者可以轻松实现高性能、跨平台的API服务部署,显著提升开发效率和系统性能。

weixin_42528780的博客 246

STM32电机PID速度控制

2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。 2.3.1 解决的问题 解决带编码器直流电机的速度闭环问题。 2.3.2 PID理论 将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示: 我们这里用电机速度控制为例,

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 6万+

关于“希尔排序”的一点思考(参考浙大陈越老师的教学视频)

最近复习了一下七大排序算法,到 “希尔排序” 这里时,看了一下浙大的数据结构视频(网易云课堂)。 看了几分钟就开始尝试着自己用java实现(先不看视频中给出的源代码),结果发现一个有意思的过程,现在记录一下。 要理解 “希尔排序” ,得先理解 “插入排序”,因为前者相当于后者的进阶。 1.插入排序 插入排序的排序策略很简单,将数组分为两堆:已排序 + 未排序,然后将未排序的元素,一个...

carl95271的博客 457

到底什么是指令集?什么是微架构?他们是什么关系?

指令集、处理器架构、芯片厂商、ARM、x86,其间关系还在迷糊吗?一文迅速理清!!

车载系统攻城狮 7813

北大信科计算机考研专业真题,【状元的血泪史】2019PKU信科ee跨考cs经验贴

当你用尽全力去做一件事,为之做好充分的准备时,一切结果的到来都显得那么的顺其自然。希望我的经历能够为学弟学妹少走弯路,提供更多的帮助。。。关键词:计应、跨考cs、初试、复试、导师先说一下大致情况:本人本科北航ee,2019报的是信科计算机应用技术方向,初试71+70+120+113=374,在计应排第二,CS方向总排名第六。机试4个,复试之后总排名计应第一,顺利被北大计算所录取。考研期间研芝士社区...

weixin_35788791的博客 1943

【stm32+K210项目】基于K210与STM32协同工作的智能垃圾分类系统设计与实现(完整工程资料源码)

本系统采用SG90舵机Maix Bit摄像头STM32C8T6主控板以及LX_TRIG_MP3_V6.0语音播报模块,构建了一套高效的智能垃圾分类系统,综合运用了图像识别、语音播报及精准控制技术。SG90舵机负责控制垃圾桶的开盖操作。该舵机通过接收PWM信号来实现转动,内部有一个基准电路产生周期为20ms的PWM信号,通过外部脉冲信号的控制(高电平时间在0.5ms至2.5ms之间),使得舵机的输出轴转动到指定位置。舵机内的位置反馈电位计。

嵌入式技术开发 5099

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CS+CV

2017年3月开学,始终感觉自己计算机基础薄弱,加上之前自己也开始对机器学习,深度学习有一些了解,始终感觉没有入门。自己开始规划系统学习计算机软件(CS)和计算机视觉(CV)的基础知识。@2017/9/04/update 2017上半年巩固CS基础课程 CS_class repository 数据结构 操作系统 数据库系统 计算机网络 算法分析和设计 侯捷STL分析 牛课网直播开课精讲 总结...

weixin_34279579的博客 1036

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[DS][Tree][PAT][List Leaves]

网易云课堂浙大数据结构课第三周 树(上)PAT: List Leaves解答原题在这里 关键问题 如何根据输入创建树? 如何根据建好的二叉树找出叶子节点?且顺序为从上到下,从左到右? 如何根据输入创建树? 题目先输入N (N<=10),表示有个结点,节点数字从0到N-1编号; 然后从编号为0的结点到N-1,依次输入每个结点的左孩子编号和右孩子编号,没有某孩子则输入-, 将孩子信息记录到两个数组

许开拓的专栏 484

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大佬算法校招经验总结(拼多多、小米、华为、百度等)

点上方蓝字视学算法获取更多干货在右上方···设为星标★,与你不见不散转载于 :工大菜鸡,已获授权https://www.nowcoder.com/discuss/2...

zandaoguang的博客 1295

送你一个励志故事(转载)

转载 MARK一下 作者:守望者1028 链接:https://www.nowcoder.com/discuss/55353 来源:牛客网   本面试主要分成三块内容: 第一部分:知识水平的提升方法与面试技巧,针对非科班或者知识面薄弱的同学,讲解准备校招与校招过程中应该具备的能力与技巧,包括但不限于推荐书单,技能说明,面试技巧等。 第二部分:大体上描述C++研发或者后台开发在笔试面试中高频出现...

cfycyf的博客 1293

数据结构 MOOC浙大笔记

第二讲线性结构 2.1线性表及其实现 初始化(建立空的顺序表) List MakeEmpty() { List PtrL; PtrL = (List)malloc(sizeof(struct LNode));//通过malloc函数动态申请结构的空间 PtrL->Last = -1;//Last代表表里最后一个元素 return PtrL; } 查找(在Last中查找X的位置) int Find(ELementType X, List PtrL) //PtrL是一个线性表结构的

XSNxsnXSN的博客 736

浙大陈越数据结构-03-树3 Tree Traversals Again

可以注意到,push的顺序是前序遍历的顺序,使用一个stack进行模拟,输出的顺序就是中序遍历的顺序,通过前序遍历和中序遍历的顺序,就可以得到一个确定的二叉树。这里可以先把二叉树建立起来后再使用后序遍历进行输出,也可以直接利用三种顺序之间的规律来进行输出。这里是使用后一种方法。

chanforg1的博客 196
上一篇: 数据结构——浙大网易云课堂记录(一)树(上篇)
下一篇: 理解TCP协议的三次握手和四次挥手
扬扬羊
博客等级 码龄9年 11粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值