关于一定规模下更快的二叉树LCA求深度
  • 板块学术版
  • 楼主BD_AZZR_CN
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/30 15:41
  • 上次更新2024/7/30 15:50:46
查看原帖
关于一定规模下更快的二叉树LCA求深度
767779
BD_AZZR_CN楼主2024/7/30 15:41

一个想法

就是用一个bitset记录路径

求最近公共祖先深度直接异或然后从左数0

在这个实现中,我设定的是root指向二叉树的最顶上的节点,root和二叉树“独立”(虽然叫root),然后root深度为1,根节点为2,对于两个串001和000,异或得到001,那么最近公共祖先深度就是2

按理来说,这个初始速度均摊是O(1),我查阅的LCA每个节点是log(深度)次,肯定大于O(1),查询操作,LCA会使用倍增,这是一个大杀器,但是如果我们对于标题"一定规模"呢?这种情况为O(1)(当深度小于等于64时)这无疑是更快的

优点:初始化快,一定规模下总体都快

缺点:占的空间多一点,需要提前规定深度,O并不是O(1),而是O(bitset长度/64)

如果您肯帮忙的话,万分感谢

(如果能找到在此时间:2024.7.28之前的"撞车"论文/明确要进行发表/进入深入讨论的信息,并留言,那么再次感谢!!!)

2024/7/30 15:41
加载中...