正题
这题做法好妙啊,首先考虑二叉树的时候,中序遍历一下,公共祖先肯定在里面,而且比lca深度更小的祖先肯定不在里面。
然后考虑一棵多叉树,在遍历两个儿子之间在序列中插入一个自己,在开始遍历和结束插入一下自己(其实这里不必要)。
现在的任务就是找到一组点,使得
,且
。
因为边权都是正数,所以如果选定了,中间选的肯定就是M,因为在L,R之间,M深度肯定是最小的。
那么每次就是区间修改深度了,维护可以直接做。在这里不多说。
本文深入探讨了二叉树及多叉树中寻找最低公共祖先(LCA)的有效算法。通过中序遍历技巧,文章揭示了如何在序列中定位LCA,并介绍了区间修改深度的方法来优化搜索过程。对于寻求提高算法理解和解决复杂树结构问题的读者来说,本文提供了宝贵的见解。
这题做法好妙啊,首先考虑二叉树的时候,中序遍历一下,公共祖先肯定在里面,而且比lca深度更小的祖先肯定不在里面。
然后考虑一棵多叉树,在遍历两个儿子之间在序列中插入一个自己,在开始遍历和结束插入一下自己(其实这里不必要)。
现在的任务就是找到一组点,使得
,且
。
因为边权都是正数,所以如果选定了,中间选的肯定就是M,因为在L,R之间,M深度肯定是最小的。
那么每次就是区间修改深度了,维护可以直接做。在这里不多说。

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