递归方法求解:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null || root == p || root == q)
return root;
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
if (left != null && right != null) {
return root;
}
return left != null ? left : right;
}
本文介绍了一种使用递归方法求解二叉树中两个节点的最近公共祖先(LCA)的算法。通过检查根节点是否为空或等于目标节点之一,然后递归地在左子树和右子树中寻找目标节点,最终返回最近的公共祖先。
2799

被折叠的 条评论
为什么被折叠?



