寻找二叉树中两个结点的最近公共祖先(这两个结点一定在树中)

对于二叉树中两个结点的最近公共祖先来说 ,这两个结点分别在自己的左子树和右子树中,所以要寻找二叉树中两个结点的最近公共祖先可以:
从根结点开始

  1. 若两个结点都在左子树 进入根节点左儿子继续判断
  2. 若两个结点都在右子树 进入根结点右儿子继续判断
  3. 若一个在左子树 一个在右子树 则这个结点这两个结点的最近公共祖先
Node* FindNode(Node*root,Node*p)//在root为根的树中找p结点
{if (root == NULL)return NULL;if (root == p)return root;if (FindNode(root->left, p))return FindNode(root->left, p);return FindNode(root->right, p);
}
Node* LowestCommonAncestor(Node*root, Node*p, Node*q)
{if (root == p || root == q)return root;Node*left = FindNode(root->left, p);Node*right = FindNode(root->left, q);if (left&&right)//都在左侧LowestCommonAncestor(root->left, p, q);else if (!left&&!right)//都在右侧LowestCommonAncestor(root->right, p, q);elsereturn root;
}

寻找二叉树中两个结点的最近公共祖先相关推荐

  1. 二叉树找到两个结点的最近公共祖先

    面试题68 - I. 二叉搜索树的最近公共祖先 https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu- ...

  2. 树如何找共同祖先_如何找到任何二叉树中两个节点的最低公共祖先?

    小编典典 尼克·约翰逊是正确的,一个一个O(n)的时间复杂度算法是最好的,如果你没有父指针,你可以做.)对于算法的一个简单的递归版本中看到代码金丁的职务)它运行在O(n)的时间. 但是请记住,如果您的 ...

  3. 二叉树中两个结点的最远距离

    二叉树是我们熟悉的数据结构之一,它的面试题也有很多,今天我们就来看下二叉树中两个结点的最远距离. 分析: 第一步: 第二步: 在分析完之后,我们就可以写代码了 //方法一:求二叉树的左右子树的高度之和 ...

  4. 寻找树中两个结点的最低公共祖先

    寻找树中两个结点的最低公共祖先 Q:在树中寻找两个结点的最低公共祖先,是什么意思呢? A:树是由根节点衍生左右孩子继续衍生左右孩子的左右孩子.所以呢树中的两个结点是一定拥有最低公共祖先(这两个结点Q: ...

  5. 求一颗二叉树中两个节点的最低公共父节点

    题目:求一棵二叉树中两个节点的最低公共父节点 思路:递归 和 非递归 public static TreeNode getLastCommonParentRec(TreeNode root, Tree ...

  6. 树中两个结点的最低公共祖先

    题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数 ...

  7. 50:树中两个结点的最低公共祖先

    题目:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针. 树的结点定义 private static class TreeNode {int val;List<TreeNo ...

  8. 程序员面试100题之十六:二叉树中两个节点的最近公共父节点(最低的二叉树共同祖先)

    这个问题可以分为三种情况来考虑: 情况一:root未知,但是每个节点都有parent指针 此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个 ...

  9. 求二叉树两个结点的最近公共祖先

    题目描述: 一颗二叉树按顺序存储结构进行存储,设计一个算法,求编号i和j的最近公共祖先 思路: 已知:二叉树.顺序存储 空的结点用"#"表示 如果i,j所在位置的结点数据不是&qu ...

最新文章

  1. Spring Autowired 注入失败总是Null
  2. Ubuntu磁盘分区以及双系统启动顺序修改
  3. python绘制三维地形_【学习笔记】Python科学计算三维可视化(黄天羽、嵩天)(学习中。。)|python基础教程|python入门|python教程...
  4. 古迪纳夫等3人获得诺贝尔化学奖 确立锂离子电池构成
  5. JAVA延迟执行(thread方式和timer方式)
  6. 从零学ELK系列(七):Centos安装Filebeat(超详细图文教程)
  7. 力扣-1925 统计平方和三元组的数目
  8. VMware新建虚拟机(CentOS)步骤详解
  9. vm14安装mac10教程(亲测;转载)
  10. Html实现QQ音乐首页(响应式)
  11. matlab求解一元四次函数,excel数据函数参数是四个吗|求一个简单的一元四次函数的最大值...
  12. pikachu漏洞搭建平台
  13. Dingo + Laravel + JWT + Entrust + memcache 实现API设计
  14. 中国锂电池粘结剂行业发展现状分析,主要为PVDF「图」
  15. joycon手柄拆解_爱活电刑室 | 撬开海拉尔的大门! 任天堂Switch全拆解
  16. docker和kvm的区别,简洁大白话篇,两者的优势对比
  17. 程序员的自我涵养,写好代码的实战经历分享
  18. 爱福窝在线装修设计软件测评
  19. Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它。
  20. 2020上海泛微JAVA校招面经

热门文章

  1. python定义数组array_python怎么创建数组
  2. 【翻译】Ext JS社区版
  3. 软件工程期末展示材料——RUC自习助手
  4. Qt界面开发案例:图表主题示例
  5. 【技术认证题库】齐治特权账号管理系统PAM初级认证题库
  6. -ee -er_EE协作登录系统-实施
  7. 转 中国人为什么丧失了慢的能力?
  8. [置顶] 微软翻译接口
  9. 知识星球《玩转股票量化交易》之 爬虫爬取股票数据
  10. 小米官网——主页直接跳转登录页或注册页的制作(详细分析)