
数据结构
文章平均质量分 92
codfishXY
机械转码
展开
-
算法基础复习-BFS、DFS
1. BFS(Breadth First Search) 原理:从一个节点开始向其邻节点扩散,遇到目标节点停止 应用 树的层序遍历(leetcode 102) public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> ret = new ArrayList<List<Integer>>(); if (root == null) re原创 2020-11-29 15:10:36 · 220 阅读 · 0 评论 -
数据结构基础复习-数组、链表、二叉树
1. 数据存储方式 数组(顺序存储):需要考虑扩容问题 链表(链式存储):需要分配空间存储节点指针 2. 数据结构的实现 3. 数据结构的操作 基本操作:遍历 -> 访问 -> CRUD 数组遍历访问 void traverse(int[] arr) { for (int i = 0; i < arr.length; i++) { //迭代访问 arr[i] } } 单链表遍历访问 class ListNode { int val; ListNode next; }原创 2020-11-04 23:20:55 · 332 阅读 · 0 评论 -
算法基础复习-动态规划
1. 动态规划 动态规划通常用来求解复杂问题的某个最优解,与分治法相似,区别在于 分治法应用于子问题互不相交的情况,即递归的每一步都生成全新的子问题 动态规划应用于重叠子问题的情况,即递归反复求解相同的子问题 使用条件 最优子结构:问题的最优解由子问题的最优解组合而成,子问题可以独立求解 重叠子问题:不同的子问题可能有公共的子子问题,导致反复求解相同的问题 实现方法 带备忘的自顶向下法(top-down with memoization) 用数组或哈希表保存每个子问题的解,求解子问题时先看是否已经原创 2020-10-25 21:22:57 · 281 阅读 · 3 评论 -
算法基础复习-排序
1. 冒泡排序 2. 快速排序 随机选择一个元素作为基准,建立分离函数使左边元素都小于基准,右边元素都大于基准,在没有优化的情况下,一般直接选第一个元素作为基准即可 分别对基准左边和基准右边两个序列递归调用快速排序 分离函数从最低端开始依次与基准元素对比,遇到大于基准的元素则交换位置;再从最高端开始依次与基准元素对比,小于基准元素则交换位置 经过重复多次3过程,最低端和最高端下标最终相等,此时的下标即基准位置 C(伪代码) void QuiceSort(int r[]) { QSort(L, 1, L原创 2020-10-20 17:18:22 · 173 阅读 · 0 评论 -
数据结构基础复习-B+树
1. 二叉排序树(二叉查找树) 结构特点:左节点值小于父节点,右节点值大于父节点 目的:提高增、查效率 {62,88,58,47,35,73,51,99,37,93} 排序如下 查找 SearchBST(BiTree T, int key, BiTree f, BiTree *p) 假设要查找93 93>62,查右子树,走①,递归调用SearchBST函数 93>88,查右子树,走⑦,递归调用SearchBST函数 93<99,查左子树,走⑨,递归调用SearchBST函数 93原创 2020-10-10 16:45:00 · 370 阅读 · 2 评论