概述: 将对象组合成树形结构以表示“部分-整体”的层次结构。“Composite使得用户对单个对象和组合对象的使用具有一致性。” 类型:结构型模式。 类图: 适用性: 1.你想表示对象的部分-整体层次结构。 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 参与者: ...
分类:
其他好文 时间:
2018-10-05 01:03:20
阅读次数:
169
先来看几个问题吧。 1.什么是树状数组? 顾名思义,就是用数组来模拟树形结构呗。那么衍生出一个问题,为什么不直接建树?答案是没必要,因为树状数组能处理的问题就没必要建树。和Trie树的构造方式有类似之处。 2.树状数组可以解决什么问题 可以解决大部分基于区间上的更新以及求和问题。 3.树状数组和线段 ...
分类:
编程语言 时间:
2018-10-04 11:11:42
阅读次数:
182
组合模式又叫合成模式,有时又叫整体-部分模式,主要用来描述整体和部分的关系,其定义为:将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 先说说组合模式的几个角色: Component抽象构件角色:定义参加组合对象的共有方法和属性,也可以定义一些默认的 ...
分类:
其他好文 时间:
2018-10-04 10:36:29
阅读次数:
161
字典树 字典树是一种树形结构,优点是利用字符串的公共前缀来节约存储空间。在这提供一个自己写的Java实现,非常简洁。 根节点没有字符路径。除根节点外,每一个节点都被一个字符路径找到。 从根节点到某一节点,将路径上经过的字符连接起来,为对应字符串。 每个节点向下所有的字符路径上的字符都不同 每个结点维 ...
分类:
编程语言 时间:
2018-09-30 15:02:24
阅读次数:
213
Description Solution 由于题目要求,将a[i]->b[i](边权为i)后所得的图应该是由森林和环套树组合而成。 假如是树形结构,所有的t[i]就直接在线段树t[i]点的dfs序(即in[t[i]],out[t[i]]区间)处记录t[i]点的深度。 这样,针对所有的f[i],在线段 ...
分类:
其他好文 时间:
2018-09-27 22:15:35
阅读次数:
204
1、定长和不定长要区分开 2、不常用的列和常用的列分开存 3、增加冗余,反范式化 4、btree索引,就是用树形结构存储在磁盘上,其中操作是用2分发,找一个中间点,然后把大比这个大的分在一边,小的放在一边,然后当你查询的时候,从数字头开始,大小分开找,这个适合区间查找,不适合一个一个找 5、hash索引,就是当你存储在硬盘的数据,先给你一个地址,然后你下次来找的时候直接用那个地址找到那个值
分类:
数据库 时间:
2018-09-26 22:10:25
阅读次数:
215
一种是:邻接表模型(局限性:对于层次结构中的每个级别,您需要一个自联接,并且随着连接的复杂性增加,每个级别的性能自然会降低。在纯SQL中使用邻接列表模型充其量是困难的。在能够看到类别的完整路径之前,我们必须知道它所处的级别。此外,在删除节点时必须特别小心,因为在此过程中可能会孤立整个子树) 一种是: ...
分类:
数据库 时间:
2018-09-25 12:40:11
阅读次数:
152
本文章参考自廖雪峰的官方网站 总的来说, 递归函数的实质就是自己调用自己. 在下一次对自己的调用之前, 函数把参数值根据某种对应法则进行了改变, 从而将改变后的参数作为下一次调用的参数. 以上面的例子来说, 函数func的形参从(file_path, ceng)变成了(full_path, ceng ...
分类:
编程语言 时间:
2018-09-23 16:37:13
阅读次数:
132
简化之后树节点中孩子的数量就少了,但是通用树形结构中每个节点可能有很多个孩子,这样简化之后的树还能描述通用的树形结构吗? 每个节点都有一个指向其第一个孩子的指针,每个节点都有一个指向其第一个右兄弟的指针。 任何的树形结构都能用“二杈”的方式表示,也就是用孩子兄弟表示法。 因此,我们的研究内容可以局限 ...
分类:
其他好文 时间:
2018-09-23 16:25:50
阅读次数:
170
通用树结构是一种容器,里面装有数据元素,我们有遍历元素的需求。 非线性决定了树中的每个结点没有固定的编号方式。 将队列中队首的指针定义成遍历时的游标,根节点进入队列后,游标指向根节点。 队头元素弹出,队首的指针就指向了别的元素,这就相当于移动了游标。 添加遍历相关的程序: 测试程序如下: 结果如下: ...
分类:
其他好文 时间:
2018-09-23 14:58:50
阅读次数:
231