
数据结构
文章平均质量分 80
Aline2021-yxz
代码改变世界
展开
-
返回给定二叉树中一层最多的节点个数(仅使用队列实现)
思路点拨:我们知道对二叉树实现层序遍历(也就是一层一层遍历)需要使用队列,而要找出节点最多的那一层,必然避不开要算出每一层节点的个数,那也就避不开层序遍历。除此之外,我们还需要维护几个变量:1:curend//当前层的最后一个节点2:nextend//下一层的最后一个节点3:curcount//当前层节点个数4:maxcount//最多的节点个数有了这几个变量,我们就可以完成这件事情,之后我们可以这样理解层序遍历:层序遍历时删除的都是当前层的节点,入的都是下一层的节点为了便于理解,先看一个例原创 2022-02-05 19:43:46 · 598 阅读 · 2 评论 -
KMP算法——详解next数组
令人烦恼的next数组,本文是作者自己的理解与思考,并不完善,只是为了提示自己,如果您已研究了KMP算法,本文对您的帮助并不大next数组完成的任务:当s1与s2字符串比较到上图所示位置时,拥有next数组的KMP算法不需要像BF算法一样:将 j 回退到开始的第二个字符将 i 退回到字符串头部而是:将 i 回退到第二个字符b处j 不动因为图示位置的前面都是匹配的字符 , 相匹配的字符串一定具有相同的前缀,所以b,c的比较就显得有点浪费资源,所以只需要找到相同的前缀就可以减少原创 2021-12-05 01:38:55 · 11131 阅读 · 7 评论 -
从认识堆到堆排序一篇搞定(动图解释)
堆什么是堆?如何建堆?向下调整算法反向向下调整算法向上调整算法堆排序什么是堆?????像上面所展示的两个完全二叉树都称作为堆,第一个叫小堆,因为双亲结点的值都小于子节点,第二个叫大堆,因为双亲结点的值都大于子节点,如果一个二叉树不满足大堆或小堆的特征,就不叫堆。堆满足的性质:0️⃣:子节点都不大于或不小于父结点。1️⃣:是一个完全二叉树。数据结构在堆实现时用的是数组的形式,父节点和子节点之间下标的关系是:左子结点下标=父节点下标*2+1;右子节点下标=父节点下标*2+2;➖➖➖➖➖➖➖原创 2021-09-02 23:03:12 · 295 阅读 · 1 评论 -
单链表及单链表的三个初级算法思想
单链表的基础知识及三个初级算法思想单链表介绍单链表的增删查改初始化链表销毁链表查找指定结点在链表头部增加新结点在链表尾部增加新结点在链表中间某节点的后面增加结点删除链表的最后一个结点删除头结点OJ题算法思想1:删除数据等于val的结点 [leetcode链接](https://leetcode-cn.com/problems/remove-linked-list-elements/description/)2:反转链表 [leetcode链接](https://leetcode-cn.com/prob原创 2021-08-02 21:31:38 · 1579 阅读 · 0 评论