由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - LCA复杂度是多少
相关主题
LCA复杂度150上这个是不是不对? (转载)
问一个题目How can one determine whether a singly linked list has a cycle?
发现一个很恶心的基础问题面试的时候 binary tree的delete也要15分钟之内写完么?
Lowest Common Ancestor of multiple nodes in a binary tree问个二叉树删除结点的问题
一个老题binary tree找 lowest common ancestor 的code (请教报Google Offer并请教面试题
least common ancestor的疑惑一道题:2个BST,按大小顺序打印两棵树的所有节点
Lowest Common Ancestor in a binary tree (no parent pointer)Least Common Ancester算法最优解
请问LOWEST COMMON ANCESTOR OF A BINARY TREE, treenode 只有parent,没有left,righthelp: leetcode "Recover Binary Search Tree" -- 附代码
相关话题的讨论汇总
话题: node话题: node2话题: cover话题: node1话题: root
进入JobHunting版参与讨论
1 (共1页)
c*******r
发帖数: 309
1
public class LowestCommonAncestor {
public boolean cover(Node root, Node node) {
if (root == null)
return false;
if (root == node)
return true;
return cover(root.left, node) || cover(root.right, node);
}
public Node Ancestor(Node root, Node node1, Node node2) {
if (root == null)
return root;
if (cover(root.left, node1) && cover(root.left, node2))
return Ancestor(root.left, node1, node2);
if (cover(root.right, node1) && cover(root.right, node2))
return Ancestor(root.left, node1, node2);
return root;
}
}
这个复杂度cover()是LogN,再recursion一下时间复杂度是多少啊?
U***5
发帖数: 2796
2
Worst case O(N^2)
LCA(3, 6)
1
\
2
\
3
\
6

【在 c*******r 的大作中提到】
: public class LowestCommonAncestor {
: public boolean cover(Node root, Node node) {
: if (root == null)
: return false;
: if (root == node)
: return true;
: return cover(root.left, node) || cover(root.right, node);
: }
: public Node Ancestor(Node root, Node node1, Node node2) {
: if (root == null)

c********t
发帖数: 5706
3
nlogn, 因为对每个node都要调用cover
再想想,这题有O(n)解法

【在 c*******r 的大作中提到】
: public class LowestCommonAncestor {
: public boolean cover(Node root, Node node) {
: if (root == null)
: return false;
: if (root == node)
: return true;
: return cover(root.left, node) || cover(root.right, node);
: }
: public Node Ancestor(Node root, Node node1, Node node2) {
: if (root == null)

U***5
发帖数: 2796
4
Ancestor第二个recursion好像有个typo?

【在 c*******r 的大作中提到】
: public class LowestCommonAncestor {
: public boolean cover(Node root, Node node) {
: if (root == null)
: return false;
: if (root == node)
: return true;
: return cover(root.left, node) || cover(root.right, node);
: }
: public Node Ancestor(Node root, Node node1, Node node2) {
: if (root == null)

t***e
发帖数: 27
5
There is a O(n) time worst case algorithm in https://code.google.com/p/
elements-of-programming-interviews/source/browse/trunk/Lowest_common_
ancestor_no_parent_template.cpp
It is the solution from Elements of Programming Interviews: 300 Questions
and Solutions http://www.amazon.com/dp/1479274836/.
c*******r
发帖数: 309
6
这个average复杂度难道不是O(logN*logN)? cover()复杂度logN, recursion logN次
(层数). worse case是O(N2)

【在 c********t 的大作中提到】
: nlogn, 因为对每个node都要调用cover
: 再想想,这题有O(n)解法

c********t
发帖数: 5706
7
我说错了,应该是O(N), CC150上有原题解释。对一个balanced tree,基本上是4N
cover本身也是一个O(n)的
但有优化解法,不重复计算 。

【在 c*******r 的大作中提到】
: 这个average复杂度难道不是O(logN*logN)? cover()复杂度logN, recursion logN次
: (层数). worse case是O(N2)

1 (共1页)
进入JobHunting版参与讨论
相关主题
help: leetcode "Recover Binary Search Tree" -- 附代码一个老题binary tree找 lowest common ancestor 的code (请教
一个stack怎么sortleast common ancestor的疑惑
Lowest common ancestor of two nodes of Binary TreeLowest Common Ancestor in a binary tree (no parent pointer)
Lowest Common Ancestor请问LOWEST COMMON ANCESTOR OF A BINARY TREE, treenode 只有parent,没有left,right
LCA复杂度150上这个是不是不对? (转载)
问一个题目How can one determine whether a singly linked list has a cycle?
发现一个很恶心的基础问题面试的时候 binary tree的delete也要15分钟之内写完么?
Lowest Common Ancestor of multiple nodes in a binary tree问个二叉树删除结点的问题
相关话题的讨论汇总
话题: node话题: node2话题: cover话题: node1话题: root