一、题目
二、代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution
{
public:
//后序递归遍历 有回溯的思想在其中
//左右 均不为空,返回本节点;如果左不为空,返回左;如果右不为空,返回右
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)
{
//核心处理
if(root == q || root == p || root==nullptr) return root;
TreeNode* left = lowestCommonAncestor(root -> left, p , q);
TreeNode* right = lowestCommonAncestor(root -> right, p , q);
//传递的部分
if(left!=nullptr&&right!=nullptr) return root;
if(left!=nullptr&&right==nullptr) return left;
else if(left==nullptr&&right!=nullptr) return right;
else
{
return nullptr;
}
}
};