//找到节点则返回
//自低向上遍历(后序)查找公共祖先
var lowestCommonAncestor = function(root, p, q) {
//查找当前子树中是否有p或q
const dd=function(root,p,q){
//中止递归的条件
//如果找到返回节点值,如果没找到,返回的是null
if(root==null||root==p||root==q){
return root
}
//后序
let left=dd(root.left,p,q) //查找左子树中是否有
let right=dd(root.right,p,q) //查找右子树中是否有
//如果左右子树都不为空代表都找到了值
if(left!==null&&right!==null){
//则当前节点为公共祖先
return root
}
//如果左子树找不到,需要知道右子树的结果才能判断当前子树是否含有对应的值
if(left==null){
return right
}
//如果右子树找不到,需要知道右子树的结果才能判断当前子树是否含有对应
if(right==null){
return left
}
}
return dd(root,p,q)
};
版权声明:本文为csD_Dscnnnnnnn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。