前言
题目: 236. 二叉树的最近公共祖先
文档: 代码随想录——二叉树的最近公共祖先
编程语言: C++
解题状态: 没思路
思路
递归+回溯。
代码
/**
* 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 == NULL) return root;
TreeNode* left = lowestCommonAncestor(root -> left, p, q);
TreeNode* right = lowestCommonAncestor(root -> right, p, q);
if (left != NULL && right != NULL) return root;
if (left == NULL && right != NULL) {
return right;
} else if (left != NULL && right == NULL) {
return left;
} else {
return NULL;
}
}
};