学习目标:动态规划五部曲:①确定dp[i]的含义②求递推公式③dp数组如何初始化④确定遍历顺序⑤打印递归数组----调试引用自代码随想录!60天训练营打卡计划!学习内容:343.整数拆分动态规划五步曲:①确定dp[i]的含义:对i拆分后得最大乘积为dp[i]②求递推公式:Ⅰj*dp[i-j],其中dp[i-j]代表两个数及以上的最大乘积。我根本不需要关心dp[i-j]是怎么组成的,因为题目只要求求出拆分后的最大的乘积,并没有问什么样的拆分结果可以获取拆分后的最大乘积。Ⅱj*(i-j)代表拆为两个数,两个数的乘积Ⅲ所以dp[i]=max(j*dp[i-j],j*(i-j),dp[i])----因
目录💡相同的树题目描述思路:代码:💡对称二叉树题目描述思路:代码:💡另一棵树的子树题目描述思路:代码:💡总结 💡相同的树题目描述给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路:这个题目实际上可以分解为许多个相同的子问题,就是检查每一个子树是否相同,然后便可以利用递归的思想来解答。代码:boolisSameTree(structTreeNode*p,structTreeNode*q){if(p==NULL&&q==NULL)returntrue;if(p==NULL&&q!=NULL)returnf
文章目录94.二叉树的中序遍历:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:94.二叉树的中序遍历:给定一个二叉树的根节点root,返回它的中序遍历。样例1:输入: root=[1,null,2,3] 输出: [1,3,2]样例2:输入: root=[] 输出: []样例3:输入: root=[1] 输出: [1]提示:树中节点数目在范围[0,100]内-100分析:面对这道算法题目,二当家的再次陷入了沉思。二叉树的中序遍历和前序遍历,后续遍历是二叉树常用的遍历方式。使用递归方式比循环非递归方式更加简单,直观,易于理解。通常二叉树的中序
此篇皆为leetcode、牛客中的简单题型和二叉树基础操作,无需做过多讲解,仅付最优解。有需要的小伙伴直接私信我~目录1.二叉树的节点个数2.二叉树叶子节点个数3.二叉树第K层节点个数4.查找值为X的节点5.leetcode——二叉树的最大深度6.leetcode——单值二叉树7.leetcode——相同的树8.二叉树的前序遍历9.二叉树的中序遍历 10.二叉树的后序遍历 11.二叉树的层序遍历12.leetcode——另一棵树的子树13.二叉树的构建及遍历 14.leetcode——对称二叉树1.二叉树的节点个数intBinaryTreeSize(BTNode*root){ returnr
华为OD机考:统一考试C卷+D卷+B卷+A卷2023年11月份,华为官方已经将华为OD机考:OD统一考试(A卷/B卷)切换到OD统一考试(C卷)和OD统一考试(D卷)。根据考友反馈:目前抽到的试卷为B卷或C卷/D卷,其中C卷居多,按照之前的经验C卷D卷部分考题会复用A卷/B卷题,博主正积极从考过的同学收集C卷和D卷真题,可以查看下面的真题目录。真题目录:华为OD机考机试真题目录(C卷+D卷+B卷+A卷)+考点说明专栏:2023华为OD机试(B卷+C卷+D卷)(C++JavaJSPy)华为OD面试真题精选:华为OD面试真题精选在线OJ:点击立即刷题,模拟真实机考环境支持的语言题解使用C++Jav
今天继续来分享的是二叉树,我们废话不多说,直接来看下面的几个接口函数,然后我们把他们实现,我们就掌握二叉树的二分之一(今天粉丝破千了,属实有点高兴了)。typedefcharBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata; structBinaryTreeNode*left; structBinaryTreeNode*right;}BTNode;//通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树BTNode*BinaryTreeCreate(BTDataType*a,intn,int*pi);//二叉树销毁voi
🎇个人主页:Ice_Sugar_7🎇所属专栏:初阶数据结构🎇欢迎点赞收藏加关注哦!文章目录🍉树🍉二叉树🍌特殊二叉树🍌二叉树的性质🍌存储结构🍉堆🍌堆的结构🍌插入🥝向上调整算法🫐时间复杂度分析🍌删除🥝向下调整算法🫐时间复杂度分析🍌堆的创建(堆的初始化)🍌堆排序🍌topk问题🍉写在最后🍉树●树是一种非线性的数据结构,它是由n(n>=0)个结点组成,具有层次关系●有一个特殊的结点,称为根结点,根节点没有前驱结点●除根节点外,其余结点被分成M(M>0)个互不相交的集合,每个集合是一棵子树🍉二叉树二叉树一个非空结点的子树为空或者至多两个子树(左子树和右子树)从这个图可以看出:二叉树不存在度大于2的结点二叉
二叉树顺序结构1.二叉树的顺序结构及实现1.1二叉树的顺序结构1.2堆的概念及结构1.3堆的实现1.3.1向上调整1.3.2向下调整1.3.3交换函数1.3.4打印1.3.5初始化1.3.6销毁1.3.7插入1.3.8删除1.3.9获得堆顶元素1.3.10判断是否为空1.3.6堆的代码实现1.3.2堆的创建1.3.3建堆时间复杂度1.4堆的应用1.4.1堆排序1.二叉树的顺序结构及实现1.1二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统
目录1.二叉排序树概念2.二叉排序树的插入(1)二叉排序树的插入过程(2)节点插入实现3.二叉排序树的查找4.二叉排序树的遍历5.二叉树排序树节点的删除(1)删除二叉排序树节点*P6.完整的流程测试使用C语言实现二叉树的链式存储数据结构之折半查找(递归和非递归),插值查找和斐波那契查找静态树表的查找(最优查找树和次优查找树)1.二叉排序树概念二叉排序树(BinarySortTree)也称为二叉查找树后者二叉搜索树:具有的性质:1.若它的左子树不空,则左子树上的所有节点的值均小于它的根节点的值;2.若它的右子树不空,则右子树上的所有节点的值均大于它的根节点的值;3.若左右子树都不为空,左右子树也
目录一.树的概念二.树中重要的概念三.二叉树的概念满二叉树完全二叉树四.二叉树的性质五.二叉树的存储六.二叉树的遍历前序遍历中序遍历 后序遍历 一.树的概念树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点,其中一个节点被指定为根节点。树的节点之间通过边连接。另外,树形结构中,子树之间不能有交集,否则就不是树形结构。树的结构具有层级关系,根节点位于最顶层,而叶节点位于最底层。树的形状可以类比于现实生活中的树,根节点相当于树的根部,而分支和叶子节点则相当于树的枝干和叶子。在计算机科学中,树被广泛用于各种应用,例如文件系统、数据库索引、编译器中的抽象语法树等。树的常见特点