1. 题目描述
2. 思路分析
3. 代码展示
class Solution {
public:
bool getPath(TreeNode* root, TreeNode* dest, deque<TreeNode*>& dq) {
if(root == nullptr)
return false;
dq.push_back(root);
if(root == dest)
return true;
if(getPath(root->left, dest, dq))
return true;
if(getPath(root->right, dest, dq))
return true;
dq.pop_back();
return false;
}
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
deque<TreeNode*> pathp;
deque<TreeNode*> pathq;
getPath(root, p, pathp);
getPath(root, q, pathq);
TreeNode* ret = root;
while(1) {
if(pathp.front() != pathq.front())
return ret;
else {
ret = pathp.front();
pathp.pop_front();
pathq.pop_front();
}
}
return ret;
}
};