给定一棵树,我需要找到从'a'到'b'的路径中'第k个节点。这意味着我需要在从节点'a'到节点'b'的路径中的'第k'位置找到节点。我正在思考最低共同祖先和/或重光分解的问题,但我不确定这是否是这样做的。任何正确的方向指导表示赞赏。
给定一棵树,在Log(n)中找到从节点'a'到节点'b'的路径中的第k个节点?
详情:
- 的树不是二叉树。它是一个具有n-1个边,n个顶点和无周期的无向图。只是你的常规树
- 树的顶点编号从1到n。有n-1个无向边连接这些顶点的n-1对
- 'a'和'b'是树中从1到n编号的任何2个顶点。我们要在从'a'到'b'的路径中找到'第k个节点。这是保证数“k”的值是< =从路径中的节点的数目“A”到“b”
甲BFS施加在每个查询(第k个节点从“A”到“b” )不是一个选项,因为查询的数量很大。
似乎很微不足道,所以可能不是问题的目的是什么,但是,如果路径是给定的,你不能只跟踪从'a'开始遇到的节点并计数到第k个? – Matt
O(log(n))查询?仅供参考,路径不是'给定'的。在树中,任意两对顶点之间只有一条路径。 – bholagabbar
您的问题以“给定路径”开头。是的,我会在树中说两个节点之间的路径是唯一的,否则它不是一棵树。 – Matt