LCA问题详解与树遍历算法.pdfVIP

  • 0
  • 0
  • 约1.73万字
  • 约 23页
  • 2026-04-13 发布于北京
  • 举报

LCA问题

该问题是省赛的常考点,分值大,并且简单。

1.树的遍历

我们之前学习过图的遍历,但是树与其有稍许不同,树由于存在层次结构,但是在大多数题目中,并没有指定其根节点

以及层次。

所以我们在面对这些问题的时候,常常假设其根节点为11。然后通过一遍dfs将整棵树进行舒展,然后得到其层次结

构,由于树一般是无向图,所以我们会建立双向边,并且额外记录一个标识,标记父亲节点。

由于11号节点为根节点,所以其父亲我们假定为00。

其舒展的过程如下:

遍历代码如下:

•C/C++

voiddfs(intu,intf)//u为当前节点,f为u的父亲节点{

fa[u]=f;

for(intv:G[u]){

if(v==f)continue;//如果与之相邻的节点为父亲,则跳过

dfs(v,u);//u是v的父亲节点

}

}

•Python

defdfs(u,f):

#fa[u]为u的父节点,初始化时

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档