动态树问题是指的一类问题,而不是具体指的某一种数据结构。它主要维护一个包含若干有根树的森林,实现对森林的修改和查询等。

实现动态树的数据结构据说主要有4种,Link-Cut Tree是其中的一种。Link-Cut Tree可以看作是所求森林的一个映射,二者的映射关系将在后面讲述。

先说Link-Cut Tree支持的基本操作包含:

1.(access)Link-Cut Tree的核心操作,后面的操作都需要access这个操作的支持。

2.(make)在森林中建立一棵树。

3.(findroot)查询森林中某一棵树的根。

4.(cut)将某个节点从当前的树中分离,也就是一棵树分成两棵树。

5.(link)将2棵根不相同的树合并,也就是把两棵树合并成一棵树。

通过上述基本操作,就能够实现动态树的一些基本问题。需要注意的是,Link-Cut Tree只实现了节点到根的操作,不过我们可以通过修改基本操作实现一些点到点的操作,如求LCA,具体过程会在后文中讲述。

再来说说Link-Cut Tree的数据组织,在说Link-Cut Tree的数据组织之前应该先细说一下Link-Cut Tree的核心操作access(u),这样有助于理解。

access(u)是访问u节点操作(从u访问到根),实际上是寻找u节点到根节点的路径。如果只是简单的向上回溯寻根,那么遇到链很长的树时,时间复杂度将会退化成线性。Link-Cut Tree采用伸展树这种数据结构,将向上访问的父节点加入伸展树中

最新文章

  1. Redis & Python/Django 简单用户登陆
  2. Visual Studio图片注释image-comments扩展
  3. myBatis 实现用户表增删查改操作<方法1 没有使用接口的>(最终版)
  4. Java API —— Collections类
  5. 自定义控件ViewPagae<
  6. Java开发所需架包官方下载
  7. NET Core,Ubuntu运行
  8. HDU 4857 (反向拓扑排序 + 优先队列)
  9. Python的数据库操作
  10. Python开发【第十篇】:Redis
  11. lua 日期的一些函数
  12. sshd服务
  13. Spark基本架构及原理
  14. 循环取到json中的字段数据,加到html中
  15. .NetCore使用Swagger进行单版本或多版本控制处理
  16. django中admin的使用
  17. sudo非交互式输入密码
  18. c和c++的强制类型转换
  19. 5种样式实现div容器中三图摆放实例对比说明
  20. WPF关于改变ListBoxItem的颜色的注意事项以及如何找到ListBox中的ItemsPanel

热门文章

  1. 第四十个知识点 一般来说SPA和DPA的区别是什么
  2. matplotlib 高阶之path tutorial
  3. CS5216PIN TO PIN替换PS8402A方案|PS8402A电路设计原理图|CS5216芯片
  4. ret2dl_resolve
  5. 万能密码:‘or 1=1-- 实战SQL注入,秒破后台
  6. SQL Server 数据库添加主键,唯一键,外键约束脚本
  7. 微信支付 V3 RSA 加签踩坑
  8. MyBatis 一级缓存实现详解及使用注意事项
  9. linux 之 误删openssl文件夹重装openssl
  10. Jenkins_构建任务提示文件权限不足的处理方法