
数据结构
文章平均质量分 78
用c和c++实现
小超想发财
学习永无止境
展开
-
带你深度理解二叉树递归(习题篇)
首先我们得建立一个二叉树才能开始二叉树递归之旅,所以要先定义一个二叉树中的节点结构体类型(包含节点值,节点左指针和右指针),再构建一个创造节点的函数(包含了初始化),之后创造节点,手动按如下图的顺序链接即可。代码如下: 注:下文的所有习题的二叉树都是上面的建立的二叉树,而且难度由简到难给定一个二叉树,计算出它的节点总数。求树的节点三步递归思想: 第一步:先想子问题,即每个子树,都是先节点总数加1,然后再遍历左子树和右子树 第二步:递归先后顺序:节点数加1→左子树→右子树 第三步:递归终止条件:遇到节点为N原创 2022-12-20 10:59:43 · 426 阅读 · 11 评论 -
删除有序数组中的重复项
给你一个的数组 nums ,请你删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的应该保持 一致。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k。注:不要使用额外的空间,你必须在修改输入数组 并在使用的条件下完成。原创 2022-11-30 22:43:48 · 403 阅读 · 6 评论 -
移除元素(进阶版)
给你一个数组 nums 和一个值 val,你需要移除所有数值等于的元素,并返回移除后数组的。不要使用额外的数组空间,你必须仅使用额外空间并修改输入数组。元素的顺序可以改变(你不需要考虑数组中超出新长度后面的元素)。。输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。原创 2022-11-21 21:11:46 · 231 阅读 · 7 评论 -
二叉树的前序,中序,后序和层序遍历
由于二叉树的增删查改意义不大,所以我们直接手动建立二叉树。建立简易二叉树之前,我们先定义一个二叉树中的节点结构体类型(包含节点值,节点左指针和右指针),再构建一个创造节点的函数(包含了初始化),之后创造节点,手动按如下图的顺序链接即可。代码如下: 注:下文的遍历都有此树。1.前序遍历的基本概念:遇到每个节点都是先遍历跟,再遍历左子针,最后遍历右子树。 2.前序遍历三步递归思想: 第一步:先想子问题,即每个子树,都是先遍历跟,再遍历左子树,最后遍历右子树 第二步:递归先后顺序:跟→左子树→右子树 第三步:递原创 2022-12-03 21:45:16 · 594 阅读 · 10 评论 -
实现顺序表的10个基本操作
顺序表是一种常见的线性表,线性表(linear list)是n个具有相同特性的数据元素的有限序列,是一种在实际中广泛使用的数据结构。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表和数值是相似的,唯一不同的是顺序表里的数据一定是连续存储的。原创 2022-11-01 17:43:11 · 942 阅读 · 16 评论