博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 236 - Lowest Common Ancestor of a Binary Tree
阅读量:6898 次
发布时间:2019-06-27

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

问题

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree

寻找二叉树中两个节点最近的公共祖先结点

思路

方法 1

按照两个节点和 root 的关系进行分类

  • 两个节点一个在 root 左边,另一个在 root 右边,显然它们的公共祖先节点就是 root

  • 两个节点都在 root 左边,以 root.left 为新 root 递归求解

  • 两个节点都在 root 右边,以 root.right 为新 root 递归求解

该方法需要耗费时间来确定两个节点所处的位置,效率不高

方法 2

参考老外的 post,不 "显式" 地计算两个节点所处的位置

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {    if (root == null || root == p || root == q) {        return root;    }    TreeNode left = lowestCommonAncestor(root.left, p, q);    TreeNode right = lowestCommonAncestor(root.right, p, q);    return left == null ? right : right == null ? left : root;}

提交

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

你可能感兴趣的文章
Delphi中DLL的其他应用
查看>>
Node.js nvshens图片批量下载爬虫 1.00
查看>>
[转]Android中的一个TextView中的字体设置不同大小
查看>>
Linux系统搭建负载均衡环境
查看>>
mvn deploy命令上传包
查看>>
C# 中的多线程
查看>>
如何在Mac上放大
查看>>
转:Java NIO系列教程(七) Socket Channel
查看>>
MongoDB aggregate 运用篇(转)
查看>>
【Static Program Analysis - Chapter 3】Type Analysis
查看>>
类的继承关系,多态的体现,我的觉得题目还是有点欠缺
查看>>
微服务(Microservices)—Martin Fowler【翻译】
查看>>
新浪微博客户端(58)-处理点击微博内容中的关键字
查看>>
文件资源Android项目的工程结构
查看>>
Mockito 库、powermock扩展
查看>>
各版本JDK1.5-1.8新特性
查看>>
京东无界零售带来机遇,家电专卖店拉动实体经济,大学生的致富经
查看>>
中国物流能送到四海八荒,菜鸟年度排行榜告诉你都去了哪些地方
查看>>
从业界良心到疲态尽显 Netflix到底中了什么降头?
查看>>
OpenStack消亡?在企业落地为什么越来越难
查看>>