【发布时间】:2020-01-26 06:21:36
【问题描述】:
我在尝试解决这个问题时在 Leetcode 上找到了这个解决方案:
https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/
Leetcode 上的每个人似乎都理所当然地认为这是如何工作的。但我不明白。这是怎么回事,这是用什么算法来找到二叉树的 LCA?
public TreeNode lowestCommonAncestorBinaryTree(TreeNode root, TreeNode p, TreeNode q) {
if(root==null) {
return null;
}
if(root==p) {
return p;
}
if(root==q) {
return q;
}
TreeNode left = lowestCommonAncestorBinaryTree(root.left, p, q);
TreeNode right = lowestCommonAncestorBinaryTree(root.right, p, q);
if (left != null && right != null) {
return root;
}
if(left!=null && right==null) {
return left;
}
if(right!=null && left==null) {
return right;
}
return null;
}
【问题讨论】:
-
没有所谓的“二叉树的最低共同祖先”;这个问题实际上要求你在二叉树中找到两个节点的最低共同祖先。
标签: algorithm binary-tree lowest-common-ancestor