题目描述

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

思路

详见链接

代码

class TreeNode:def __init__(self,x):self.val = xself.left = Noneself.right = Noneclass Solution:def lowestCommonAncestor(self,root,p,q):if p.val > q.val:min_ , max_ = q.val, p.valelse:min_, max_ = p.val, q.valresult = []def search(root,p,q):if root.val >= p and root.val <= q:reslut.append(root)return if root.val > p and root.val > q:search(root.left,p,q)sele:search(root.right,p,q)search(root,min_,max_)return result[0]

剑指offer面试题68 - I. 二叉搜索树的最近公共祖先(递归)(二叉搜索树)相关推荐

  1. 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)

    题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...

  2. [剑指offer]面试题第[7]题[JAVA][斐波那契数列][递归]

    [问题描述] 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 [解答思路] 1.递归(面试避免) O(n^2) public ...

  3. 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)

    文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...

  4. 剑指offer面试题[37]-两个链表的第一个公共结点

    题目描述 输入两个链表,找出它们的第一个公共结点. /* struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), ...

  5. 剑指offer面试题52. 两个链表的第一个公共节点(双指针法)

    题目描述 输入两个链表,找出它们的第一个公共节点. 思路 详见链接 代码 class Solution:def getIntersectionNode(self, headA:ListNode, he ...

  6. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

  7. 剑指offer——面试题63:二叉搜索树的第k个结点

    剑指offer--面试题63:二叉搜索树的第k个结点 Solution1: 20180916重做 /* struct TreeNode {int val;struct TreeNode *left;s ...

  8. 【重点】剑指offer——面试题27:二叉搜索树与双向链表

    剑指offer--面试题27:二叉搜索树与双向链表 Solution1: 这是书上的代码,要理解好最近几道题,对指针的操作比较多... class Solution { public:TreeNode ...

  9. 剑指offer——面试题24:二叉搜索树的后序遍历序列

    剑指offer--面试题24:二叉搜索树的后序遍历序列 Solution1: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二 ...

最新文章

  1. 你真的会vue-router吗?
  2. cvCreateMat函数
  3. 【计算机视觉】森林火灾检测-1
  4. svpwm仿真_三相三线逆变_并网仿真建模
  5. RecursiveTask和RecursiveAction的使用 以及java 8 并行流和顺序流
  6. java agent技术原理及简单实现
  7. 第5章 Python 数字图像处理(DIP) - 图像复原与重建16 - 约束最小二乘方滤波、几何均值滤波
  8. V-SQL的简单使用
  9. Shell学习笔记---变量赋值与运算(原创)
  10. 移动互联网“去哪儿”?
  11. Win32汇编——过程控制(环境变量、命令行参数、可执行文件执行)
  12. 【Cloud Foundry 应用开发大赛】“相助”专业问答系统
  13. 都说 NoSQL 比 SQL 强,一文揭密 NoSQL 到底有多强!
  14. 在线SVG在线编辑器
  15. 疾病地图制作_助力旅游业复工复产,这份山西中医文旅地图请收好,就在你家门口...
  16. 直流有刷/无刷电机的介绍
  17. IT职场: 选择外企利与弊
  18. 为什么我家狗子放屁特特特别臭?
  19. 软路由折腾记(一)openwrt
  20. 把一个数据库中的数据导入到另一个数据库中的方法

热门文章

  1. 实验一 Linux开发环境的配置 20145213祁玮 20145222黄亚奇
  2. 论Postgres的“已提交的而且 xmin’比当前事务的XID小的记录对当前事务才是可见的”...
  3. jquerymobile iscrollview
  4. 苏炫杰全国计算机等级考试,高二升高三的主题班会
  5. cv2.show()cv2.waitKey()cv2.VideoCapture()的使用
  6. java h5服务器推送事件_关于H5+中push推送的服务端代码是怎么写的
  7. java中switch条件_关于java:你能在Android的switch-case中使用条件语句吗?
  8. cssd oracle,Oracle RAC /etc/init.d/init.cssd startcheck
  9. OSCache操作详解+标签使用
  10. ORACLE数据库 基础练习表EMP\DEPT \SALGRADE脚本