形式陈述
有根树是二元组 ,其中 是一棵树公理库树Tree连通且无圈的有限简单无向图,也就是任意两点之间只有一条简单路径的图。, 是指定的根。对任意 ,由树的等价刻画公理库树的等价刻画Characterizations of trees非空有限简单无向图是树,当且仅当它具有唯一简单路径,或连通且恰有 n−1 条边;极小连通与极大无圈也给出等价刻画。,从 到 有唯一简单路径;该路径上紧邻 、且更靠近根的顶点称为 的父亲,记为 ;以 为父亲的顶点称为 的孩子。根没有父亲,其他顶点恰有一个父亲。
若顶点 位于从 到 的唯一简单路径上,则称 是 的祖先,记作 ;此时 是 的后代。允许 时得到自反祖先关系;要求 时称真祖先。顶点深度为
这里距离 是唯一路径的边数,因此根的深度为 ,孩子的深度比父亲多 。由 及其全部后代诱导的子图称为以 为根的子树,它自身以 为根。
祖先关系 是 上的偏序:每点在自己的根路径上,给出自反性;祖先的根路径是后代根路径的前缀,给出传递性;若两点互为祖先,它们的深度必须相同,因而是同一点,给出反对称性。任意顶点的祖先沿根路径全序排列。两个顶点至少共有根这个祖先,公共祖先正是两条根路径的公共前缀,因此一定具有唯一最深元素。
直觉
无根树只告诉我们哪些顶点相连;选定根以后,每条边才获得“向上/向下”的方向。父亲、深度、子树和祖先都依赖这个选择,而不是树本身固有的标签。
根把树变成一套层级坐标系。沿父指针反复上跳必在有限步内到达根;沿孩子边向下则不会回到先前节点。树的无环性保证这种层级没有矛盾,连通性保证每个顶点都有唯一根路径。
例子与边界
设边为
取根 时,先写出根到 的路径 与 。两条路径在 处分叉,因而 是两点的父亲,也是它们最深的公共祖先。顶点 的祖先依次为 ,深度为 ;顶点 的子树含 ,却不含它的父亲 。
若改取根 ,根到 的路径变成 。父亲关系依次为 、、,而 的父亲仍为 。换根会翻转新旧根之间路径上的父子方向,不必翻转所有边。
这个结论依赖树的唯一路径。考虑有向无环图中的弧 : 都是 的公共祖先,但彼此不可达,也都没有更靠下的公共祖先。因此“最低公共祖先”有两个候选;仅有一个根和无有向圈还不够。根树还不自动带孩子次序:若需要“第一个孩子”或括号序列编码,必须额外指定有序根树结构。
推论与应用
上面公共前缀的最后一个顶点就是最近公共祖先公理库最近公共祖先Lowest common ancestor · LCA有根树中同时为两个顶点祖先且深度最大的唯一顶点及其查询问题。;沿某个顶点的根路径回退指定步数,则得到 Level Ancestor 查询。深度与子树区间进一步支撑 Euler Tour、重链剖分与树上动态规划。
把父亲函数视为从非根顶点到顶点的映射,可用二进制倍增预计算 级祖先。若深度优先遍历在首次进入顶点时依次编号,根为 的例子可得到顺序 。遍历进入 后,会先访问完其全部后代,再返回 ;所以 的子树恰占连续位置 。一般地,记首次进入位置为 ,子树全部访问完时下一个可用位置为 ,则 是 的祖先当且仅当
这里采用左闭右开的区间约定;若程序对进入和退出都单独计时,应按那套时间戳定义改写判据。
根树还可用于编码嵌套微分。B-级数与根树阶条件公理库B-级数与根树阶条件B-series · Butcher rooted trees用根树分别编码初等微分,推导 RK 三阶条件,并解释线性测试为何漏掉非线性阶误差。让每个节点的分支数表示向量场的导数阶数,把 RK 的高阶展开转换成逐棵树的系数匹配;这里的树是微分结构索引,而非存储检索结构。
参考资料
- Oscar Levin,Discrete Mathematics: An Open Introduction,第 4 版,开放在线教材,§2.2 Trees:树的刻画、生成树与有根树。
- Reinhard Diestel, Graph Theory, 5th ed., Springer, 2017, §1.5.
- Thomas H. Cormen et al., Introduction to Algorithms, 4th ed., MIT Press, 2022, Chapters 20 and 22.
- Douglas B. West, Introduction to Graph Theory, 2nd ed., Prentice Hall, 2001, §4.1.