题目描述:
代码实现:
- 递归法,对左右子树分别递归,找到p,q后返回,若left,right同时找到pq,就返回根节点,如果只有left和right其中一个找到,就返回他们本身。
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @param {TreeNode} p
* @param {TreeNode} q
* @return {TreeNode}
*/
var lowestCommonAncestor = function(root, p, q) {
if (root === null || root === p || root === q) {
return root
}
var left = lowestCommonAncestor(root.left, p, q)
var right = lowestCommonAncestor(root.right, p, q)
if (left && right) {
return root
} else if (left) {
return left
} else if (right) {
return right
}
};