class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
// 找不到或者根节点就是p或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) {
// 若左右都有p或q,则root是公共节点
return root;
} else if (left != null) {
// pq只在左边
return lowestCommonAncestor(left, p, q);
} else if (right != null) {
// pq只在右边
return lowestCommonAncestor(right, p, q);
}
return null;
}
}
【LeetCode】236.二叉树的最近公共祖先
最新推荐文章于 2024-07-30 16:12:13 发布