树相关算法详解
一、树的基础概念
树是一种重要的组合结构,在处理具有递归分解结构的对象时自然出现,如分类、层次结构或谱系等。
- 树的定义
- 形式上,树是一个连通的无环图。若指定其中一个顶点为根,则称为有根树,根为树提供了从父节点到子节点的方向。
- 没有子节点的顶点称为叶节点。具有 $n$ 个顶点的树恰好包含 $n - 1$ 条边。可以通过不断移除叶节点及其关联边,最终得到一个孤立顶点(即 1 个顶点和 0 条边的树)来证明。
- 树的层次和深度
- 有根树的顶点被划分为不同层次,根节点位于第 0 层,其子节点位于第 1 层,依此类推。
- 最大的非空层次数定义了树的深度,也就是从根节点到叶节点的最大距离。
- 子树和森林
- 以顶点 $v$ 为根的子树由从原始树的根仅通过顶点 $v$ 可达的所有顶点和边组成。
- 不相交的树的并集称为森林。
- 树的动态数据结构
- 有许多基于树的动态数据结构,如二叉红黑搜索树或区间树。这些结构会对树进行重新平衡操作,以保证插入、删除和查询操作的时间复杂度为对数级。
- 在编程竞赛中,由于输入只给定一次,通常可以直接构建平衡结构,从而跳过插入/删除操作。
超级会员免费看
订阅专栏 解锁全文
2738

被折叠的 条评论
为什么被折叠?



