236. 二叉树的最近公共祖先
题目链接:36. 二叉树的最近公共祖先
方法:回溯
解题思路
若两个节点
代码
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if (!root) return NULL;
if (root == p || root == q) return root; // 找到其中一个,并返回
TreeNode* l = lowestCommonAncestor(root->left, p, q); // 左子树有没有
TreeNode* r = lowestCommonAncestor(root->right, p, q); // 右子树有没有
if (!l && !r) return NULL; // 都没有则返回NULL
else if (!l) return r; // 若只找到一个,则返回
else if (!r) return l;
return root; // 若都找到,表明当前节点就为 x ,且继续向上回溯,由于其他子树都返回NULL,该节点会一直返回到最上层
}
};
复杂度分析
时间复杂度:
空间复杂度:
分类:
leetcode题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具