LCA的离线算法(Tarjan)与在线算法(RMQ)详解

本文介绍了最近公共祖先(LCA)问题,包括问题简介、题目的分类(在线算法与离线算法)以及解法。离线算法采用Tarjan算法,通过后序DFS和并查集处理;在线算法则基于RMQ(Range Minimum Query),利用先序DFS和ST算法。文中给出了算法步骤和示例,并提供了相关入门题目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 LCA问题的简介

        LCA问题(Least Common Ancestors,最近公共祖先问题),是指给定一棵有根树T,给出若干个查询LCA(u, v)(通常查询数量较大),每次求树T中两个顶点x和y的最近公共祖先。

        询问:LCA(x, y),即求x与y的最近公共祖先。

        题目描述:通常是先给定一棵有根树,然后询问(两种询问方式,下文会提及)。

 

 

 

二、LCA题目的分类

        在线算法:你问我一次,我立马回答你。

        离线算法:等你问完了,我再一次性回答你。

 

 

 

三、LCA问题的解法


图1

        以下以图1为例,分别对两个分类的算法作相应的讲解:

1.  离线算法——Tarjan(后序DFS+并查集)

        【算法步骤】

        a.  后序遍历访问树(假设现在访问到结点x并且x不是叶子)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值