leetcode236. 二叉树的最近公共祖先
给定一棵二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义: “对于有根树T的两个结点u、v,最近公共祖先表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。”(一个节点也可以是它自己的祖先)
例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]
_______3______/ \___5__ ___1__/ \ / \6 _2 0 8/ \7 4
示例 1:
输入: root, p = 5, q = 1 输出: 3 解释: 节点5
和节点1
的最近公共祖先是节点3
示例 2:
输入: root, p = 5, q = 4 输出: 5 解释: 节点5
和节点4
的最近公共祖先是节点5
因为根据定义最近公共祖先节点可以为指定节点自身。
解题思路:
递归搜索左右子树,如果左子树和右子树都不为空,说明最近父节点一定在根节点。
反之,如果左子树为空,说明两个节点一定在右子树;
同理如果右子树为空,说明两个节点一定在左子树。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root==NULL) return root;if(root==p||root==q) return root;TreeNode *left=lowestCommonAncestor(root->left,p,q);TreeNode *right=lowestCommonAncestor(root->right,p,q);if(left!=NULL&&right!=NULL) return root;//如果p,q刚好在左右两个子树上if(left==NULL) return right;//仅在右子树if(right==NULL) return left;//仅在左子树}
};
leetcode236. 二叉树的最近公共祖先相关推荐
- leetcode236 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先且 ...
- Leetcode--236. 二叉树的最近公共祖先(Java)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先且 ...
- 43-二叉树练习-LeetCode236二叉树的最近公共祖先
题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x 是 p.q 的 ...
- 奇安信集团笔试题:二叉树的最近公共祖先(leetcode236),杀死进程(leetcode582)...
1. 二叉树最近公共祖先 奇安信集团 2020校招 服务端开发-应用开发方向在线考试 编程题|20分2/2 寻祖问宗 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制:C/C+ ...
- leetcode 236. 二叉树的最近公共祖先 递归解法 c语言
如题: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x, 满足 x 是 p.q ...
- 二叉树题目----6 二叉树的最近公共祖先 AND 二叉树搜索树转换成排序双向链表
二叉树的最近公共祖先 思路 在左.右子树中分别查找是否包含p或q: 如果以下两种情况(左子树包含p,右子树包含q/左子树包含q,右子树包含p),那么此时的根节点就是最近公共祖先 如果左子树包含p和q, ...
- LeetCode 1676. 二叉树的最近公共祖先 IV
文章目录 1. 题目 2. 解题 1. 题目 给定一棵二叉树的根节点 root 和 TreeNode 类对象的数组(列表) nodes,返回 nodes 中所有节点的最近公共祖先(LCA). 数组(列 ...
- 最近公共祖先_leetcode No.236 二叉树的最近公共祖先
承接二叉搜索树的最近公共祖先. 题目链接: 二叉树的最近公共祖先 - 力扣(LeetCode)leetcode-cn.com 题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百 ...
- 【LeetCode】【HOT】236. 二叉树的最近公共祖先(递归)
[LeetCode][HOT]236. 二叉树的最近公共祖先 文章目录 [LeetCode][HOT]236. 二叉树的最近公共祖先 package hot;class TreeNode{int va ...
最新文章
- vs2015编译 pybind 动态库
- MF RC522读卡芯片手册
- c++ 哪些自定义的数据类型
- django 链接多个数据库 并使用原生sql
- html filter 在线预览,HTML Filter
- Vant 1.0 发布:轻量、可靠的移动端 Vue 组件库
- bash 函数内部变量_使用源命令将函数和变量导入Bash
- bzoj2425 [HAOI2010]计数 组合数
- stm32端口复用和重映射
- 利用common-fileupload组件实现java上传下载
- vs2015 hiredis编译使用
- 轮式联合收割机液压系统设计
- JavaScript --------WebS APIs学习之本地存储
- 冒泡排序及其优化(三种优化)
- win10系统预加载服务器,等等, 你的win10关闭了这几个服务, 会流畅许多
- Python 批量转换视频音频采样率(附代码) | Python工具
- linux 清除dns缓存
- ABeam (德硕)News | 喜提「SAP BTP 最佳实施合作伙伴」奖项
- 【大数据入门核心技术-Spark】(二)Spark核心模块
- 赵小楼《天道》《遥远的救世主》深度解析(76)人性的本来是喜欢享受、安逸、舒适的,不舒服的你能接受吗?
热门文章
- 一阶低通滤波器方程_一阶低通滤波器_一阶低通滤波器公式_一阶低通滤波器原理...
- 商业逻辑认知:华为为何不倒?微软为何重生?瑞幸能干掉星巴克吗?
- 华尔街日报图表_阅读《华尔街日报》文章而无需花一分钱(合法)
- Linux - 命令(一)
- android双导航功能吗,Android导航栏隐藏与浮现(二)
- BZOJ_2594_[Wc2006]水管局长数据加强版_LCT
- vue 使用canvas弄个星空当背景
- 图论——AOV网络及拓扑排序
- 在PTA习题集中快速查找自己的历史提交记录
- vscode神级插件