Binary tree 如何找到二叉树中所有节点对的LCA
有一些算法可以找到给定节点对的LCA。但是,有没有算法可以在小于O(n^2)的渐近时间内找到二叉树中所有节点对的LCABinary tree 如何找到二叉树中所有节点对的LCA,binary-tree,lowest-common-ancestor,Binary Tree,Lowest Common Ancestor,有一些算法可以找到给定节点对的LCA。但是,有没有算法可以在小于O(n^2)的渐近时间内找到二叉树中所有节点对的LCA 我特别寻找一个时间跨度为O(n logn)的算法,您需要递归地思考这个问题。考虑树的根r。r的直接左子树和所有属于根在r的直接右子树的子树的节点的LCA。对r的右近子级和属于树的所有节点(根在r的左近子级)执行类似操作 那么,让我们定义一个名为LCA的函数,如下所示(在伪代码中): LCA(r) if r does not have both a right and l
我特别寻找一个时间跨度为O(n logn)的算法,您需要递归地思考这个问题。考虑树的根r。r的直接左子树和所有属于根在r的直接右子树的子树的节点的LCA。对r的右近子级和属于树的所有节点(根在r的左近子级)执行类似操作 那么,让我们定义一个名为LCA的函数,如下所示(在伪代码中):
LCA(r)
if r does not have both a right and left child
return empty list.
else
p1 = pairs made up of left child and all the nodes rooted at right child.
p2 = pairs made up of right child and all the nodes rooted at the left child.
p3 = LCA(left child of r)
p4 = LCA(right child of r)
return p1 + p2 + p3 + p4