![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
来跟棒棒糖
个人笔记记录
展开
-
二叉树中序遍历
文章目录二叉树中序遍历主要思想代码实现二叉树中序遍历主要思想整棵树的左节点进栈,直至左节点为空依次弹出节点。打印。对弹出节点的右树进行同样的操作代码实现package com.vitamin.tree;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * @author 马凯 * 2022/4/9 18:16 */public class MiddleOrderTree原创 2022-04-09 23:15:36 · 428 阅读 · 0 评论 -
力扣链表排序
链表链表排序使用java List所有节点加入list.使用list排序,然后串起来返回。最后一个节点的next指向null public ListNode sortList(ListNode head, int type) { if (head == null || head.next == null) { return head; } ListNode currentNode = head; List<ListNode> listN原创 2022-04-07 19:28:46 · 349 阅读 · 0 评论 -
力扣86分割链表
文章目录链表分隔链表思想注意点代码实现链表分隔链表https://leetcode-cn.com/problems/partition-list/给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。思想需要使用5个临时节点,分别指向小于链表的头小于链表的next指针 A大于链表的头 BB大于链表的next指针 B当前链表的遍历节点 C遍历当前链表如原创 2022-04-07 19:27:40 · 143 阅读 · 0 评论 -
二叉树前序遍历与后序遍历
二叉树前序遍历递归借助栈进行排序先将根节点压栈栈不为空,如果存在根节点,先右后左。弹栈打印。直至栈为空package com.vitamin.tree;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * @author * 2022/4/7 11:06 */public class PreOrderTree { public List<Intege原创 2022-04-07 19:26:04 · 678 阅读 · 0 评论 -
leetcode链表-复制带随机指针的链表
链表leetcode138复制带随机指针的链表复制带随机指针的链表方法一借助Mappublic Node copyRandomList(Node head, int type) { HashMap<Node, Node> map = new HashMap<>(10); Node cur = head; while (cur != null) { map.put(cur, new Node(cur.val)); cu原创 2022-04-04 12:59:24 · 426 阅读 · 0 评论 -
leetcode234回文链表
文章目录链表回文链表第一种第二种第三种代码链表回文链表leetcode 234在使用第三种方法的时候,需要将链表恢复对于偶数节点个数的链表,中间节点(我们找的是中间偏左的节点),那么严格意义的右半部分第一种将链表全部进行压栈操作,当栈不为空,进行弹栈操作同时从链表的头节点开始进行比较,如果出现元素不相同则链表不是回文链表第二种找出链表的中间节点,将后半部分链表进行压栈。弹栈与链表元素对比,直至栈空间为空这里调用反转的链表方法传入的的节点是:中间节点下一个元素第三种找出链表的中间节点原创 2022-04-02 18:33:04 · 851 阅读 · 0 评论 -
链表是否有环+环的长度+入环节点
链表链表是否有环主要实现有两种方法,参考求链表的中间节点。本质都是一样的,只要有环就能后找到package com.vitamin.list;/** * 判断链表是否有环 */public class HasCycle { public boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return false; }原创 2022-03-21 16:56:44 · 614 阅读 · 0 评论 -
删除链表的倒数第n个节点
链表删除链表的倒数第n个节点leetocde遍历2此双指针设置虚拟节点 dummyHead 指向 head设定双指针 p 和 q,初始都指向虚拟节点 dummyHead移动 q,直到 p 与 q 之间相隔的元素个数为 n同时移动 p 与 q,直到 q 指向的为 NULL返回虚拟头节点的下一个元素示意图代码实现package com.vitamin.list;/** * 删除倒数第N个节点 */public class RemoveNthFrom原创 2022-03-20 18:21:20 · 58 阅读 · 0 评论 -
获取链表的中间节点的两种方法
文章目录链表获取链表的中间节点leetcode普通解法快慢指针代码链表获取链表的中间节点看了一些博客,个不一致,有的代码实现是错误的,所以把自己想的记录下来。有的时候:对于偶数个数的链表,我们需要获取链表的中间节点的偏左,有的时候偏右。所以具体情况需要具体分析。主要想法如下leetcode地址: 876普通解法先遍历一次,计算链表的长度,进而计算链表中间结点的下标(注意偶数结点的时候,得到的是中间的第二个结点),然后再遍历一次,来到所要求结点的位置缺点必须先遍历完整个链表,然后才原创 2022-03-20 17:44:25 · 3433 阅读 · 1 评论 -
归并排序与数组小和问题求解
排序归并排序思想归并排序算法有两个基本的操作,一个是分,也就是把原数组划分成两个子数组的过程。一个是治,它将两个有序数组合并成一个更大的有序数组。它将数组平均分成两部分: center = (left + right)/2,当数组分得足够小时—数组中只有一个元素时,只有一个元素的数组自然而然地就可以视为是有序的,此时就可以进行合并操作了。因此,上面讲的合并两个有序的子数组,是从 只有一个元素 的两个子数组开始合并的。当合并两个数组的时候,如果遇到待比较的元素是相同的值时,那么先拷贝右边的,原创 2022-03-20 15:43:19 · 841 阅读 · 0 评论