PAT树形家谱问题

这篇博客探讨了家谱数据结构中的最近公共祖先(LCA)问题,包括如何求解最大深度以及在限定世代内的LCA。通过自底向上记忆化搜索来寻找最大深度,并从上往下追溯找到第一条符合条件的路径。同时,介绍了如何通过双亲节点信息快速判断两个节点的最近公共祖先。题目涉及到冰岛人的家谱、病毒溯源等应用场景。
摘要由CSDN通过智能技术生成

单亲节点家谱

求最近公共祖先类问题

求几代以内时候有LCA类问题:从两个节点分别搜索一次,每个父节点都标记代数,以此作为判断
题目:
冰岛人

求最大深度以及最大深度相关的问题

求最大深度:自底向上记忆化搜索
求符合最大深度的第一条路径:先从下向上搜出最大深度,再从上向下搜到第一个等于最大深度的节点

题目:
小字辈
病毒溯源


双亲节点家谱

求最近公共祖先类问题

求几代以内时候有LCA类问题:从两个节点分别搜索一次,每个父节点都标记代数,以此作为判断

void dfs(int x,int t)
{
	if(st[x]>0&&t<=5||st[x]>0&&st[x]<=5){
		flag=true; return ;
	}
	st[x]=t;
	if(f[x]!=-1)dfs(f[x],t+1);
	if(m[x]!=-1)dfs(m[x],t+1);
}

题目:
愿天下有情人都是失散多年的兄妹

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wow_awsl_qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值