- 二叉树的存储结构二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。 1.顺序存储顺序存储顺序结构存储就是使用数组来存储一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。完全二叉树的顺序存储 经典结论:假设parent是父亲结点在数组中的下标则左孩子 = parent*... 二叉树的存储结构二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。 1.顺序存储顺序存储顺序结构存储就是使用数组来存储一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。完全二叉树的顺序存储 经典结论:假设parent是父亲结点在数组中的下标则左孩子 = parent*...
- 习题练习1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )A 不存在这样的二叉树B 200C 198D 199解答:二叉树性质:==n0 = n2 + 1==目前:n2 = 199 所以n0 = 200叶子结点->度为0-> n0 = 200所以答案为:B2.下列数据结构中,不适合采用顺序存储结构的是( )A 非完全二叉树 B ... 习题练习1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )A 不存在这样的二叉树B 200C 198D 199解答:二叉树性质:==n0 = n2 + 1==目前:n2 = 199 所以n0 = 200叶子结点->度为0-> n0 = 200所以答案为:B2.下列数据结构中,不适合采用顺序存储结构的是( )A 非完全二叉树 B ...
- 特殊的树-二叉树 2.1概念:一棵二叉树是结点的一个有限集合,该集合:1.或者为空2.由一个根节点加上两棵别称为左子树和右子树的二叉树组成注意:二叉树的度不一定为2如:空树:度为0只有一个结点:度为0有两个结点:度为1 满二叉树和完全二叉树 满二叉树满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。如果一个二叉树的层数为K,且结点总数是2^k -1 则它就是... 特殊的树-二叉树 2.1概念:一棵二叉树是结点的一个有限集合,该集合:1.或者为空2.由一个根节点加上两棵别称为左子树和右子树的二叉树组成注意:二叉树的度不一定为2如:空树:度为0只有一个结点:度为0有两个结点:度为1 满二叉树和完全二叉树 满二叉树满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。如果一个二叉树的层数为K,且结点总数是2^k -1 则它就是...
- 树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继树是递归定义的。 ... 树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继树是递归定义的。 ...
- 栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。 思考:用什么实现栈 1.0栈的基本结构typedef int STDataType;... 栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。 思考:用什么实现栈 1.0栈的基本结构typedef int STDataType;...
- 队列的基本概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表, 队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 思考:用什么结构实现队列数组链表综上,我们选择用链表实现 1.0-队列结构==为了方便尾插,头删。我们定义两个指针标志头和尾==typedef ... 队列的基本概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表, 队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 思考:用什么结构实现队列数组链表综上,我们选择用链表实现 1.0-队列结构==为了方便尾插,头删。我们定义两个指针标志头和尾==typedef ...
- 带头双向链表的基本概念带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了 链表带头和不带头的区别==不带头==:用头指针,指针指向的就是第一个结点因为函数中可能要修改一级指针plist,所以我们要传plist的地址进行操作,即要... 带头双向链表的基本概念带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了 链表带头和不带头的区别==不带头==:用头指针,指针指向的就是第一个结点因为函数中可能要修改一级指针plist,所以我们要传plist的地址进行操作,即要...
- 05.尾删尾删可能要改变plist(如果删完了,plist要置空),传二级指针尾删:找到尾结点然后释放掉,为了防止野指针问题,还要找到上一个结点,把它的next指针置空。由于如果只有一个结点的时候,没有前一个结点。所以要单独判断只有一个结点时:释放掉第一个结点,然后把头指针置空 (注意优先级问题 *pphead就是第一个结点)多个结点时:01.使用两个指针变量,一个先走,一个后走,02.... 05.尾删尾删可能要改变plist(如果删完了,plist要置空),传二级指针尾删:找到尾结点然后释放掉,为了防止野指针问题,还要找到上一个结点,把它的next指针置空。由于如果只有一个结点的时候,没有前一个结点。所以要单独判断只有一个结点时:释放掉第一个结点,然后把头指针置空 (注意优先级问题 *pphead就是第一个结点)多个结点时:01.使用两个指针变量,一个先走,一个后走,02....
- 「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」 09.在pos位置前插入思路:遍历链表,找到pos位置之前的结点(pre->next == pos),pos前一个结点的next链接新结点,新结点的next链接pos注意:假如pos为头结点,不能找到pos位置之前的结点,所以,只有一个节点时,要单独判断!只有一个结点:相当于头插,可以直接调用头插的接口 。新结点... 「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」 09.在pos位置前插入思路:遍历链表,找到pos位置之前的结点(pre->next == pos),pos前一个结点的next链接新结点,新结点的next链接pos注意:假如pos为头结点,不能找到pos位置之前的结点,所以,只有一个节点时,要单独判断!只有一个结点:相当于头插,可以直接调用头插的接口 。新结点...
- 「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」 不带头单向非循环单链表 顺序表的缺陷中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。 链表是什么... 「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」 不带头单向非循环单链表 顺序表的缺陷中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。 链表是什么...
- 「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」 2.8头删注意:要考虑数组中是否还有元素可以被删除头删:即把第二个元素往前覆盖注意:要从前面开始往前覆盖! 删除元素:size–void SeqListPopFront(SeqList* ps){ if (ps->size == 0) { printf("已经没有元素\n"); return ; } int ... 「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」 2.8头删注意:要考虑数组中是否还有元素可以被删除头删:即把第二个元素往前覆盖注意:要从前面开始往前覆盖! 删除元素:size–void SeqListPopFront(SeqList* ps){ if (ps->size == 0) { printf("已经没有元素\n"); return ; } int ...
- 题目:设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。你的程序还需要返回被替换后的字符串的长度。(挑战:在原字符串(字符数组)中完成替换,不适用额外空间)样例:对于字符串"Mr John Smith", 长度为 13,替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 ... 题目:设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。你的程序还需要返回被替换后的字符串的长度。(挑战:在原字符串(字符数组)中完成替换,不适用额外空间)样例:对于字符串"Mr John Smith", 长度为 13,替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 ...
- 在本文中,我将深入探讨 20 种解决问题的技巧,您必须知道这些技巧才能在学习、面试、工作中脱颖而出。我将这些技术归为一组:基于指针基于递归排序和搜索扩展基本数据结构杂项我将解释它们中的每一个,展示如何将它们应用于编码问题,并为您留下一些练习,以便您可以自己练习。 基于指针的技术 1. 两个指针这种技术对于排序数组和我们想要对其元素进行分组的数组非常有用。这个想法是使用两个(或多个指针)根据某... 在本文中,我将深入探讨 20 种解决问题的技巧,您必须知道这些技巧才能在学习、面试、工作中脱颖而出。我将这些技术归为一组:基于指针基于递归排序和搜索扩展基本数据结构杂项我将解释它们中的每一个,展示如何将它们应用于编码问题,并为您留下一些练习,以便您可以自己练习。 基于指针的技术 1. 两个指针这种技术对于排序数组和我们想要对其元素进行分组的数组非常有用。这个想法是使用两个(或多个指针)根据某...
- 打家劫舍II动态规划你学会了吗213. 打家劫舍 II 问题描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下 ,今晚能够偷... 打家劫舍II动态规划你学会了吗213. 打家劫舍 II 问题描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下 ,今晚能够偷...
- 1. 简介 2. 常用命令 3. zset数据结构 1. 简介Redis有序集合zset(sorted set)与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。因为元素是有序的, 所以你也可以很快的根据评分... 1. 简介 2. 常用命令 3. zset数据结构 1. 简介Redis有序集合zset(sorted set)与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。因为元素是有序的, 所以你也可以很快的根据评分...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签