📅  最后修改于: 2023-12-03 15:12:41.049000             🧑  作者: Mango
这是一道关于数据结构的算法题,题目如下:
给定一棵根节点为r的二叉树和节点p、q,找出p和q的最近公共祖先节点。
这道题需要通过递归的方法实现,具体实现方式可以参考下面的代码片段。
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;
}
这道题需要掌握二叉树的基本概念和递归算法的实现方式。在实际的开发过程中,可能还需要根据不同的业务需求进行不同的优化和调整。