
LeetCode Lowest Common Ancestor of a Binary Tree
初始思考: 从根节点开始,分别记录两个目标节点(例如p和q)的路径。 路径记录: 使用深度优先搜索(DFS)来收集p和q的路径信息,从而确定其在树中的位置。 路径比较: 比较两个路径中的公共前子路径,最长的共同子路径即为它们的LCA。 DFS遍历:定义一个递归函数 路径存储:通过一个列表记录每个节点的访问顺序。每当进入一个节点时,将其记录下来,离开节点时则移出。 路径比较:从两路径的最短长度开始,从前往后比对,找到最大的共同子路径。
初始化路径:分别从根节点开始遍历目标节点p和q的路径。 生成路径:收集每个节点的路径信息,记录访问顺序。 路径比较:从两端的共同路径长度开始比对,遇到不一致的节点时停止,返回最后的公共节点作为LCA。
发布日期:2025-04-05 01:08:33
浏览次数:10
分类:精选文章
本文共 1630 字,大约阅读时间需要 5 分钟。
寻找二叉树中两个节点的最低公共祖先(LCA)
在二叉树结构中,寻找两个给定节点的最低公共祖先(Lowest Common Ancestor,简称LCA)是一个常见的问题。LCA被定义为共有两个目标节点的最低层的公共祖先节点,包括这两个节点各自的路径。这意味着这个节点是两个目标节点上excluding彼此的共同祖先。
问题描述
给定如下二叉树结构:
3 / \ 5 1 / \ / \ 6 2 0 8 / \4 7
示例1:LCA(5, 1) 为节点3。此外,根据LCA的定义,一个节点可以是自己的祖先(此处的特殊情况,但实际应用中需明确节点是否为真实存在的条件)。
示例2:LCA(5,4) 为节点5,这是因为根据LCA的定义,节点可以是自己的子节点。
方法思路
要找出两个节点的最低公共祖先,我们可以采用以下方法:
具体实现
我们采用类似递归的方式来实现这个过程:
dfs
,用于记录路径信息。当到达目标节点时返回true,否则继续遍历左右子树。代码解析
class Solution { vectorpath1; vector path2; bool dfs(TreeNode* root, TreeNode* target, vector & path) { path.push_back(root); if (root == target) return true; if (dfs(root->left, target, path)) return true; if (dfs(root->right, target, path)) return true; path.pop_back(); return false; } TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { path1.clear(); path2.clear(); if (!dfs(root, p, path1) || !dfs(root, q, path2)) return NULL; int pos = 0; int len = min(path1.size(), path2.size()); TreeNode* common = NULL; while (pos < len && path1[pos] == path2[pos]) { common = path1[pos++]; } return common; }};
思路总结
这种方法确保我们能在有限时间内找到两个节点的最低公共祖先,适用于所有二叉树结构。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月01日 18时16分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
elTable火狐浏览器换行
2023-01-24
15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏)
2023-01-24
100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了
2023-01-24
10个程序员可以接私活的平台
2023-01-24
10条sql语句优化的建议
2023-01-24
10款最佳免费WiFi黑客工具(附传送门)零基础入门到精通,收藏这一篇就够了
2023-01-24
15个备受欢迎的嵌入式GUI库,从零基础到精通,收藏这篇就够了!
2023-01-24
15个程序员常逛的宝藏网站!!从零基础到精通,收藏这篇就够了!
2023-01-24
2023应届毕业生找不到工作很焦虑怎么办?
2023-01-24
2024 年需要了解的顶级大数据工具(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
2024大模型行业应用十大典范案例集(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
2024年全球顶尖杀毒软件,从零基础到精通,收藏这篇就够了!
2023-01-24
2024年最流行的十大开源渗透测试工具
2023-01-24