数据结构-寻找二叉树两节点的最近公共祖先(Java)
寻找最近公共祖先
题目
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
思路
1,从任意节点出发后序遍历寻找p和q节点
2,对于p和q的公共祖先A来说,p和q节点会出现在三个位置中(根,左,右)两个
3,对于 boolean find()方法,判断以A为公共祖先的二叉树能否找到p或q节点,其中0,1,2表示的意思
0:没有找到p和q节点
1: p和q出现在三个位置中的一个
2:p和q出现在三个位置的两个
代码实现
TreeNode lca;//最近公共祖先public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {find(root,p,q);return lca;}//在二叉树能否找到p或q节点public boolean find(TreeNode root, TreeNode p, TreeNode q) {int left,right,mid;if(root == null){return false;}left = find(root.left,p,q)?1:0;right = find(root.right,p,q)?1:0;mid = (root == p || root == q)?1:0;if(left+right+mid == 2){lca = root;return true;}return left + right + mid > 0;}
数据结构-寻找二叉树两节点的最近公共祖先(Java)相关推荐
- 两节点的最小公共祖先LCA
一.二叉搜索树中两节点的最小公共祖先: 最初级的题目,在一颗二叉搜索树中寻找两节点的最小公共祖先.根据二叉搜索树的特征,从根节点开始查找,若两节点的val值都小于当前节点,则他们的最小公共祖先就去左子 ...
- 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先
[试题描述] 求二叉树中任意两个节点的最近公共祖先也称为LCA问题(Lowest Common Ancestor). 二叉查找树 如果该二叉树是二叉查找树,那么求解LCA十分简单. 基本思想为:从树根 ...
- 二叉链表之寻找两节点的最近公共祖先☆
题目:p.q分别为指向该二叉树中任意两个节点的指针,试编写算法ancestor(root,p,q,r),找到p.q的最近公共祖先节点r 分析: 上一道题其实可以给我们一些启示,就是我们 ...
- 由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现
最近看了一道面试题目,觉得很有意思,而且常常被问到,今天综合归纳了一下这道题目,并给出了各种变形题目,附上JAVA版的程序解答. 题目是这样的:寻找二叉树的最低公共祖先?(其中隐含着一个盲点:树是什么 ...
- 寻找二叉树两个结点的最低共同父节点
寻找二叉树两个结点的最低共同父节点 题目:二叉树的结点的定义如下: struct TreeNode {int m_nValue;TreeNode *m_pLeft;TreeNode *m_pRight ...
- 二叉树(二):判断是不是二叉搜索树、判断是不是完全二叉树、判断是不是平衡二叉树、二叉搜索树的最近公共祖先、在二叉搜索树中找到两个节点的最近公共祖先、序列化二叉树、重建二叉树、输出二叉树的右视图
目录 一.判断是不是二叉搜索树 1.1 题目 1.2 题解 二.判断是不是完全二叉树 2.1 题目 2.2 题解 三.判断是不是平衡二叉树 3.1 题目 3.2 题解 四.二叉搜索树的最近公共祖先 4 ...
- 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案
牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...
- 在二叉树中找到两个节点的最近公共祖先(C++)
在二叉树中找到两个节点的最近公共祖先 描述 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...
- 2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p
2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x ...
最新文章
- Centos7.5虚拟机无法ping通网关、外网IP地址
- aspectj 获取方法入参_深入探索编译插桩技术(二、AspectJ)
- 论DATASNAP远程方法支持自定义对象作参数
- 计算机桌面上的输入法状态栏,输入法状态栏
- python图像直方图、获取每一个柱的个数_python数字图像处理实现直方图与均衡化...
- Python中的原始字符串
- 剑指 Offer II 024. 反转链表
- cpu渲染测试软件,CPU多核项目大比拼 Corona渲染器测试
- 杭电计算机研究生就业报告,实力杭电 | 留杭就业人数又双叒叕NO.1,快来围观杭电2018届毕业就业质量报告...
- 迅雷可以下载的文件是forum.php,让论坛进化!“迅雷附件”功能简介
- 干货 | 那些你不知道的爬虫反爬虫套路
- win7修复计算机 报错6,Win7系统出现APPCRASH错误怎么解决
- 仓库系统用什么服务器,什么是仓库管理saas系统 仓库管理saas系统的功能有哪些...
- 2023年前端面试题集锦
- c语言求1平方根,c语言求平方根公式
- Web主机管理器(WHM)中如何安装SSL证书
- Unity中实现涂鸦和橡皮擦功能
- 一阶电路实验报告心得_rc一阶电路的响应测试心得体会
- flutter 运行失败 The SDK directory 'xxxxx' does not exist.
- 可爱宝宝力扣刷题集目录
热门文章
- BUAA-OO 第三单元总结
- Unity2D游戏使游戏角色移动的脚本
- 骷髅机器人素描图片大全_人物肖像素描的自我修炼2
- 国家初中学生体质测试评分软件,国家学生体质健康标准评分表__小学,初中,高中...
- 唐毅:带领和数集团,做好科技成果与创新需求的“摆渡人”
- 中国联通WCDMA网编号计划和频率及扰码规划
- 最大值和最小值(I)
- html中的变圆的属性,CSS3属性之圆角效果——border-radius属性
- Android 开发:通信篇-TCP客户端
- java打印空白页_java - DocPrintJob在随机主机上打印空白页 - 堆栈内存溢出