递归 & 高级树
文章平均质量分 79
1
Debroon
万象禅心(这辈子只搞AI+WEB3.0),闲下写点(AI技术,医学影像,医学大模型 & 人性关系底层逻辑,狼性佛心团队建设,引流霸榜营销演说)。
展开
-
二叉树和递归框架
因为位置的原因,前序位置的代码只能从函数参数中获取父节点传递来的数据,而后序位置的代码不仅可以获取参数数据,还可以获取到子树通过函数返回值传递回来的数据。递归函数,二叉树的每一个节点需要做什么(回溯模式、分解子问题模式),需要在什么时候(前\中\后序)做。核心在于 for 循环里面的递归,在递归之前做选择,在递归之后撤销选择。撤销选择:在离开节点后,从路径中拿出一个选择,将它恢复到选择列表中。做选择:在进入节点前,从选择列表拿出一个选择,将它放入路径。只要涉及递归的问题,都是树的问题,或者说树的遍历。原创 2023-01-23 20:18:12 · 916 阅读 · 0 评论 -
模式匹配:滚动哈希到 Rabin-Karp 算法
模式匹配:滚动哈希到 Rabin-Karp原创 2021-11-06 13:24:26 · 325 阅读 · 0 评论 -
并查集(UnionFind)
并查集(UnionFind)基本介绍合并优化基于 Size 优化基于 Rank 优化基于路径压缩优化 基本介绍 并查集可以高效的回答,网络中任意的俩个点是否连接,因为只关心是否连接,不关心是怎么连接,所以没有做无用功。 所谓并查集(UnionFind),就是由俩种操作组合而成: 并:union 查:find 并查集也是树,不过不是父亲指向孩子,而是孩子指向父亲。 把每一个元素,看做是一个节点并且指向自己的父节点,根节点指向自己。 我们通过一个数组记录这份关系: 数组编号 0.原创 2021-11-25 18:58:58 · 544 阅读 · 0 评论 -
[208]. 实现 Trie(实现字典树)
实现 Trie(前缀树)题目函数原型字典树 题目 题目:https://leetcode-cn.com/problems/implement-trie-prefix-tree/ 函数原型 class Trie { public: Trie() {} void insert(string word) {} bool search(string word) {} bool startsWith(string prefix) {} }; .原创 2021-11-23 23:39:23 · 353 阅读 · 0 评论 -
[211]. 添加与搜索单词 - 数据结构设计(字典树支持匹配查询)
添加与搜索单词 - 数据结构设计题目函数原型字典树支持通配符查询 题目 题目:https://leetcode-cn.com/problems/design-add-and-search-words-data-structure/ 函数原型 class WordDictionary { public: WordDictionary() {} void addWord(string word) {} bool search(string word) .原创 2021-11-24 11:34:48 · 465 阅读 · 0 评论 -
[677]. 键值映射(字典树实现映射)
键值映射题目函数原型字典树实现映射 题目 题目:https://leetcode-cn.com/problems/Map-sum-pairs/ 函数原型 class MapSum { public: MapSum() {} void insert(string key, int val) {} int sum(string prefix) {} }; 字典树实现映射 映射的格式:键:值{键:值}键:值 重新定义字典树结构: cla.原创 2021-11-24 14:22:20 · 510 阅读 · 0 评论 -
[303]. 区域和检索 - 数组不可变(线段树区间查询)
区域和检索 - 数组不可变题目函数原型线段树SRQT 分解 题目 题目:https://leetcode-cn.com/problems/range-sum-query-immutable/ 函数原型 class NumArray { public: NumArray(vector<int>& nums) {} int sumRange(int left, int right) {} }; 线段树 class.原创 2021-11-22 17:28:53 · 605 阅读 · 0 评论 -
[307]. 区域和检索 - 数组可修改(线段树区间更新)
我们按照上面的查询函数来更新区间即可,但其实我们还得更新下面的叶节点。对于二维区间查询问题,也可以使用线段树。以此类推,三维、四维等都可以。函数不仅可以更新区间中某个值,也可以是更新区间的所有值。除此之外,还有动态线段树(链式),避免数组带来的浪费。对比 303(SQRT 分解部分),307 多了一步。对比 303(线段树部分),307 多了一步。,需要更新某个位置/区间的值,其他代码同。,需要更新某个位置/区间的值,其他代码同。于是,更好的是懒惰更新,维持。如果叶节点也更新,就是。......原创 2021-11-22 18:17:25 · 999 阅读 · 0 评论 -
解密树的平衡:二分搜索树 → AVL自平衡树 → 左倾红黑树
解密树的平衡:二分搜索树 → AVL平衡树 → 红黑树二分搜索树AVL平衡树红黑树 二分搜索树 AVL平衡树 红黑树原创 2021-11-29 21:33:41 · 651 阅读 · 0 评论