由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 讨论一下LCA的最好算法
相关主题
请问如何求binary tree的lowest common ancestorLowest Common Ancestor in a binary tree (no parent pointer)
微软电面题Another problem about Binary tree.
请问关于lowest common ancestor的问题。一些资料(CS)
刚看了geekforgeek烙印代码果然一坨屎逻辑混乱确认一下RMQ/LCA那道老题
大牛给点建议Least Common Ancester算法最优解
一个老题binary tree找 lowest common ancestor 的code (请教一道算法题求教,关于全连通图
Lowest common ancestor of two nodes of Binary TreeCLRS上重点章节例题习题
least common ancestor的疑惑暑假总算把自个卖出去了...回报版上一个吧
相关话题的讨论汇总
话题: lca话题: 算法话题: careercup话题: topcoder话题: dp
进入JobHunting版参与讨论
1 (共1页)
A*********r
发帖数: 564
1
topcoder上有关于LCA的算法,比较能够接受的有两个:
1)用DP作preporcessing, 用 O(nlogn) time, 然后查询再用O(logn) time
2) 转化为 restricted RMQ problem, 可以达到O(n) time, O(n) space.
(详见http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor
不过看到了careercup上给出的一个非DP算法,recursive的,貌似算法复杂度也只有O(
n), 但是没有用多余的空间。。虽然topcoder上面的可以查询任意两个node之间的LCA,
但在实际面试题中,我们一般都是会给定两个node,这样看来careercup上的不是更好
吗?!
下面给出careercup上的算法,大家讨论一下看看。
/* Returns NULL, p, q or the nearest common ancestor of p and q, assume p
and q are in the tree
h**6
发帖数: 4160
2
以前曾经想过一个方法,先序中序后序遍历二叉树。那么在先序的两个结点之前,中序
的两个结点之中,后序的两个结点之后,一定有一个唯一重复的结点,就是其最低公共
父结点。
D***h
发帖数: 183
3
递归栈你不算空间开销了?
topcoder上讨论的RMQ是可以在任意tree上查找LCA的。

O(
LCA,

【在 A*********r 的大作中提到】
: topcoder上有关于LCA的算法,比较能够接受的有两个:
: 1)用DP作preporcessing, 用 O(nlogn) time, 然后查询再用O(logn) time
: 2) 转化为 restricted RMQ problem, 可以达到O(n) time, O(n) space.
: (详见http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor
: 不过看到了careercup上给出的一个非DP算法,recursive的,貌似算法复杂度也只有O(
: n), 但是没有用多余的空间。。虽然topcoder上面的可以查询任意两个node之间的LCA,
: 但在实际面试题中,我们一般都是会给定两个node,这样看来careercup上的不是更好
: 吗?!
: 下面给出careercup上的算法,大家讨论一下看看。
: /* Returns NULL, p, q or the nearest common ancestor of p and q, assume p

A*********r
发帖数: 564
4
我知道topcoder上的更general, 我只是说对于这个类型的面试题,有没有更容易直观
的算法。。
我指的空间,是一般面试题中说的需要额外保存的数据结构。

【在 D***h 的大作中提到】
: 递归栈你不算空间开销了?
: topcoder上讨论的RMQ是可以在任意tree上查找LCA的。
:
: O(
: LCA,

A*********r
发帖数: 564
5
好像也可行,不过比较每个的path, 最直接的方法估计要O(n*n)的时间吧。。

【在 h**6 的大作中提到】
: 以前曾经想过一个方法,先序中序后序遍历二叉树。那么在先序的两个结点之前,中序
: 的两个结点之中,后序的两个结点之后,一定有一个唯一重复的结点,就是其最低公共
: 父结点。

1 (共1页)
进入JobHunting版参与讨论
相关主题
暑假总算把自个卖出去了...回报版上一个吧大牛给点建议
LCA写得想吐一个老题binary tree找 lowest common ancestor 的code (请教
LCA居然有constant time and linear space的解法Lowest common ancestor of two nodes of Binary Tree
面试题库除了careercup还有哪里有?有这样的东西么(描述见内)least common ancestor的疑惑
请问如何求binary tree的lowest common ancestorLowest Common Ancestor in a binary tree (no parent pointer)
微软电面题Another problem about Binary tree.
请问关于lowest common ancestor的问题。一些资料(CS)
刚看了geekforgeek烙印代码果然一坨屎逻辑混乱确认一下RMQ/LCA那道老题
相关话题的讨论汇总
话题: lca话题: 算法话题: careercup话题: topcoder话题: dp