data-structure
data-structure
艾斯比的日常
简单,快乐,分享
展开
-
二叉树的深度优先搜索, 前序中序后序
深度优先搜索即 depth first search, 简称 DFS从根节点触发, 沿着路径, 达到最大层次的节点, 然后回退到上一节点, 继续搜索有前序, 中序, 后序三种方式前序遍历根左右a b c d e f g h i j // 递归方式 public void firstRecursion(TreeNode root){ if (root != null) { System.out.println(root.val);原创 2022-01-29 22:23:09 · 1140 阅读 · 1 评论 -
单链表如何遍历
单链表遍历, 即不断移动当前指针, 即本地缓存一个临时节点, 循环判断当前指针不为空, 然后执行业务逻辑, 当逻辑执行完成后, 移动指针, 即 tmp = tmp.next /** * 单链表遍历 */ @Test public void testIterator() { ListNode head = getListNode(1, 2, 3, 4, 5); ListNode tmp = head; while (tm原创 2021-12-07 21:08:29 · 2666 阅读 · 0 评论 -
求单链表的倒数第 k 个节点
思路双指针p1 先走 k-1 步, p2 开始. 此时 p1, p2 同时移动.循环的条件是 p1.next != null, 当 p1 移动到链表末尾, 此时 p2 刚好位于倒数第 k 个节点 @RequiredArgsConstructor @Data class ListNode { final int val; ListNode next; } /** * 倒数第 k 个节点 * 时间复杂度 O(1)原创 2021-10-29 21:15:13 · 189 阅读 · 0 评论 -
数据结构有哪些
线性结构数组链表队列栈非线性结构二维数组多维数组广义表树结构图结构原创 2020-07-13 23:37:46 · 476 阅读 · 0 评论 -
如何判断链表是否有环
使用两个不同步长的指针遍历链表, 如果它们在某个节点上相遇, 则表示该链表有环原创 2021-01-11 20:44:21 · 87 阅读 · 0 评论 -
单链表和双向链表区别
单链表和双向链表的数据结构都包含指向下一个元素指针 next, 双向链表还包括指向上一个元素指针 previous 单链表只能向后遍历, 双向链表向前向后都可以遍历原创 2020-11-03 00:26:54 · 367 阅读 · 0 评论 -
线性数据结构
数组 (连续内存空间) 链表 (节点中存放下一个元素的引用) 队列 (先进先出) 栈 (后进先出)原创 2020-10-16 00:44:35 · 83 阅读 · 0 评论 -
二叉树的遍历方式
前序遍历: 根左右中序遍历: 左根右后序遍历: 左右根前序遍历 // 前序遍历: 根左右 public void preOrder() { System.out.println(this.val); if (this.left != null) { this.left.preOrder(); } if (this.right != null) { this.right.preO.原创 2021-03-01 23:00:06 · 65 阅读 · 0 评论