博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode 简单】 第六十八题 二叉搜索树的最近公共祖先
阅读量:4947 次
发布时间:2019-06-11

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

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

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

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

_______6______       /              \    ___2__          ___8__   /      \        /      \   0      _4       7       9         /  \         3   5

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6 解释: 节点 2 和节点 8 的最近公共祖先是 6。

示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4输出: 2解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

说明:

  • 所有节点的值都是唯一的。
  • p、q 为不同节点且均存在于给定的二叉搜索树中。
# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    def lowestCommonAncestor(self, root, p, q):        """        :type root: TreeNode        :type p: TreeNode        :type q: TreeNode        :rtype: TreeNode        """        if (root is None or q is None or p is None):            return root        if(p.val < root.val and q.val < root.val):            return self.lowestCommonAncestor(root.left,p,q)        elif (p.val > root.val and q.val > root.val):            return self.lowestCommonAncestor(root.right,p,q)        else:            return root

 

转载于:https://www.cnblogs.com/flashBoxer/p/9527555.html

你可能感兴趣的文章
【BZOJ1064】[Noi2008]假面舞会 DFS树
查看>>
日志信息中总是打印行号可能导致系统缓慢
查看>>
MyBatis中别名的设置
查看>>
Collections.sort的两种用法
查看>>
CSS实现div的高度填满剩余空间
查看>>
Golang常用数据结构(对照python)
查看>>
利用 ssh 的用户配置文件 config 管理 ssh 会话
查看>>
Flutter Native调用Dart端方法,并获取数据
查看>>
程序设计实习MOOC / 程序设计与算法(一)第二周测验(2018春季)
查看>>
【SignalR学习系列】3. SignalR实时高刷新率程序
查看>>
物联网之RFID使用——小学生到校通报系统
查看>>
康德的道德观与哲学观
查看>>
“获取硬盘信息失败,请谨慎操作”的解决方案
查看>>
signed 与 unsigned 有符号和无符号数
查看>>
c++链栈
查看>>
c# winform 根据窗体自动调整控件
查看>>
MyBatis 查询
查看>>
一键GHOST优盘版安装XP/win7系统
查看>>
MyEclipse xml 手动添加 dtd
查看>>
字符串操作函数
查看>>