【Leetcode刷题篇】leetcode236 二叉树的最近公共祖先
发布日期:2021-06-29 15:33:26 浏览次数:3 分类:技术文章

本文共 1066 字,大约阅读时间需要 3 分钟。

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]

在这里插入图片描述
题解:先对这棵树遍历,遍历找到每个数的父节点。之后对第一个结点进行访问,并将其父节点存储。对第二个结点访问,如果其出现在存储中,返回,否则继续找其父亲。

package com.lcz.leetcode;/** * 二叉树的最近公共祖先 */import java.util.*;public class Leetcode236 {
class TreeNode{
int val; TreeNode left; TreeNode right; TreeNode(int x){
val = x; } } // 哈希表存储父节点 HashMap
parent = new HashMap<>(); // 存储是否访问过 HashSet
visited = new HashSet<>(); public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
// 对其遍历 dfs(root); while(p!=null) {
visited.add(p.val); p = parent.get(p.val); } while(q!=null) {
if(visited.contains(q.val)) {
return q; } q = parent.get(q.val); } return null; } private void dfs(TreeNode root) {
if(root.left!=null) {
parent.put(root.val,root); dfs(root.left); } if(root.right!=null) {
parent.put(root.val,root); dfs(root.right); } }}

转载地址:https://codingchaozhang.blog.csdn.net/article/details/109493435 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Leetcode刷题篇】leetcode230 二叉搜索树中第K小的元素
下一篇:【Leetcode刷题篇】leetcode235 二叉搜索树的最近公共祖先

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月30日 01时26分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

在 RT-Thread Studio 上使用 RT-Thread Nano 2019-04-29
开源项目|软件包应用作品:通用物联网系统平台 2019-04-29
【经验分享】RT-Thread UART设备驱动框架初体验(中断方式接收带\r\n的数据) 2019-04-29
单片机里面的CPU使用率是什么鬼? 2019-04-29
推荐一个优质Linux技术公众号-作者都是一线Linux代码贡献者们哦 2019-04-29
RT-Thread 编程风格指南 2019-04-29
95后高校电子教师,软硬兼修有趣有料! 2019-04-29
使用 STM32 通用 Bootloader ,让 OTA 更加 Easy 2019-04-29
Cache 的基本概念与工作原理 2019-04-29
装机量超亿台 RISC-V +IoT OS!中科蓝讯与RT-Thread战略合作,共推自主物联网生态发展 2019-04-29
Android程序员必备!面试一路绿灯Offer拿到手软,Android面试题及解析 2019-04-29
Android程序员的春天!12个View绘制流程高频面试题,分享PDF高清版 2019-04-29
Android进阶:啃下这些Framework技术笔记,已拿到offer 2019-04-29
android从入门到精通!春招我借这份PDF的复习思路,含泪整理面经 2019-04-29
Android体系化进阶学习图谱:简单聊聊2021年Android开发的现状和思考,含泪整理面经 2019-04-29
Android入门你值得拥有!史上最通俗计算机网络分层详解,含BATJM大厂 2019-04-29
android培训技能!怒斩获了30家互联网公司offer,面试真题解析 2019-04-29
android培训技能!致Android高级工程师的一封信,Android篇 2019-04-29
android培训课程!移动APP开发框架盘点,吊打面试官系列! 2019-04-29
Android小技巧:Android彻底组件化方案实践方法!已拿offer 2019-04-29