博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode刷题篇】leetcode236 二叉树的最近公共祖先
阅读量:1887 次
发布时间:2019-04-26

本文共 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); } }}

转载地址:http://xwwdf.baihongyu.com/

你可能感兴趣的文章
ProxySQL实现Doris FE高可用
查看>>
NGINX多个VUE项目使用独立二级域名部署
查看>>
Apache doris 最佳实践-Compaction调优(1)
查看>>
Apache Doris 最佳实践-Compaction调优(2)
查看>>
Doris 最佳实践-Compaction调优(3)
查看>>
Apache DORIS安装使用测试报告
查看>>
【Doris全面解析】Doris Stream Load原理解析
查看>>
Apache doris Be开发调试
查看>>
Apache Doris在蜀海供应链的实践
查看>>
Linux shell自动化检测 网络与端口 联通情况
查看>>
找规律2 2 3 4 9 32
查看>>
记一次linux宕机问题核查
查看>>
linux jq 格式化 json
查看>>
linux shell脚本 for 与 while 循环的区别
查看>>
如何展开指定JSON内所有的数组元素
查看>>
关于Kafka其中一个Broker挂掉后,生产者正常,消费者无法消息的问题
查看>>
awk 引用外部变量 输出单引号 输出双引号
查看>>
记一次 [TOP、PS等多命令不可用 服务器load average过高 服务器频繁宕机 无异常宕机]的经历
查看>>
Kerberos : Unable to obtain password from user
查看>>
kerberos : Failed to find any Kerberos tgt
查看>>