寻找最近公共祖先
题目
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 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)相关推荐

  1. 两节点的最小公共祖先LCA

    一.二叉搜索树中两节点的最小公共祖先: 最初级的题目,在一颗二叉搜索树中寻找两节点的最小公共祖先.根据二叉搜索树的特征,从根节点开始查找,若两节点的val值都小于当前节点,则他们的最小公共祖先就去左子 ...

  2. 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先

    [试题描述] 求二叉树中任意两个节点的最近公共祖先也称为LCA问题(Lowest Common Ancestor). 二叉查找树 如果该二叉树是二叉查找树,那么求解LCA十分简单. 基本思想为:从树根 ...

  3. 二叉链表之寻找两节点的最近公共祖先☆

    题目:p.q分别为指向该二叉树中任意两个节点的指针,试编写算法ancestor(root,p,q,r),找到p.q的最近公共祖先节点r 分析:         上一道题其实可以给我们一些启示,就是我们 ...

  4. 由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现

    最近看了一道面试题目,觉得很有意思,而且常常被问到,今天综合归纳了一下这道题目,并给出了各种变形题目,附上JAVA版的程序解答. 题目是这样的:寻找二叉树的最低公共祖先?(其中隐含着一个盲点:树是什么 ...

  5. 寻找二叉树两个结点的最低共同父节点

    寻找二叉树两个结点的最低共同父节点 题目:二叉树的结点的定义如下: struct TreeNode {int m_nValue;TreeNode *m_pLeft;TreeNode *m_pRight ...

  6. 二叉树(二):判断是不是二叉搜索树、判断是不是完全二叉树、判断是不是平衡二叉树、二叉搜索树的最近公共祖先、在二叉搜索树中找到两个节点的最近公共祖先、序列化二叉树、重建二叉树、输出二叉树的右视图

    目录 一.判断是不是二叉搜索树 1.1 题目 1.2 题解 二.判断是不是完全二叉树 2.1 题目 2.2 题解 三.判断是不是平衡二叉树 3.1 题目 3.2 题解 四.二叉搜索树的最近公共祖先 4 ...

  7. 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案

    牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...

  8. 在二叉树中找到两个节点的最近公共祖先(C++)

    在二叉树中找到两个节点的最近公共祖先 描述   给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...

  9. 2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p

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

最新文章

  1. Centos7.5虚拟机无法ping通网关、外网IP地址
  2. aspectj 获取方法入参_深入探索编译插桩技术(二、AspectJ)
  3. 论DATASNAP远程方法支持自定义对象作参数
  4. 计算机桌面上的输入法状态栏,输入法状态栏
  5. python图像直方图、获取每一个柱的个数_python数字图像处理实现直方图与均衡化...
  6. Python中的原始字符串
  7. 剑指 Offer II 024. 反转链表
  8. cpu渲染测试软件,CPU多核项目大比拼 Corona渲染器测试
  9. 杭电计算机研究生就业报告,实力杭电 | 留杭就业人数又双叒叕NO.1,快来围观杭电2018届毕业就业质量报告...
  10. 迅雷可以下载的文件是forum.php,让论坛进化!“迅雷附件”功能简介
  11. 干货 | 那些你不知道的爬虫反爬虫套路
  12. win7修复计算机 报错6,Win7系统出现APPCRASH错误怎么解决
  13. 仓库系统用什么服务器,什么是仓库管理saas系统 仓库管理saas系统的功能有哪些...
  14. 2023年前端面试题集锦
  15. c语言求1平方根,c语言求平方根公式
  16. Web主机管理器(WHM)中如何安装SSL证书
  17. Unity中实现涂鸦和橡皮擦功能
  18. 一阶电路实验报告心得_rc一阶电路的响应测试心得体会
  19. flutter 运行失败 The SDK directory 'xxxxx' does not exist.
  20. 可爱宝宝力扣刷题集目录

热门文章

  1. BUAA-OO 第三单元总结
  2. Unity2D游戏使游戏角色移动的脚本
  3. 骷髅机器人素描图片大全_人物肖像素描的自我修炼2
  4. 国家初中学生体质测试评分软件,国家学生体质健康标准评分表__小学,初中,高中...
  5. 唐毅:带领和数集团,做好科技成果与创新需求的“摆渡人”
  6. 中国联通WCDMA网编号计划和频率及扰码规划
  7. 最大值和最小值(I)
  8. html中的变圆的属性,CSS3属性之圆角效果——border-radius属性
  9. Android 开发:通信篇-TCP客户端
  10. java打印空白页_java - DocPrintJob在随机主机上打印空白页 - 堆栈内存溢出