/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @param p int整型
* @param q int整型
* @return int整型
*/
function lowestCommonAncestor(root, p, q) {
// write code here
let ans = null;
let flag = true;
function findNode(node) {
if (node == null) {
return 0;
}
let max = 0;
// 查询左节点查到目标节点个数
if (node.left) {
l = findNode(node.left);
max = l;
}
// 查询右节点查到目标节点个数
if (node.right) {
r = findNode(node.right);
max += r;
}
if (node.val == p) {
max++;
}
if (node.val == q) {
max++;
}
// 若是第一次找到两个目标节点,则将ans指向当前node节点
if (flag && max >= 2) {
ans = node;
flag = false;
}
// console.log("max:", max);
// console.log("node:", node);
return max;
}
findNode(root);
return ans.val;
}
module.exports = {
lowestCommonAncestor: lowestCommonAncestor
};