剑指offer 面试题50:树中两个结点的最低公共祖先

题目:
输入一棵数的两个结点,返回这两个结点的最低公共祖先

解法:
分析:如果是二叉树,可以使用递归的思路,从根结点开始,如果两个结点分布在左右两颗子树上,则即为所求;如果都在左子树,递归搜索左子树;如果都在右子树,递归搜索右子树。

如果是一般的树,通过保存根节点到输入结点的路径,然后求这两条路径的最后一个公共子节点即可。问题的关键就在于求得这个路径:从根节点开始,深度优先遍历根节点的所有子节点,如果遇到了输入结点,即求得了路径。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,448评论 0 25
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,401评论 0 19
  • 总结 想清楚再编码 分析方法:举例子、画图 第1节:画图分析方法 对于二叉树、二维数组、链表等问题,都可以采用画图...
    M_巴拉巴拉阅读 1,237评论 0 7
  • 一. 算法之变,结构为宗 计算机在很多情况下被应用于检索数据,比如航空和铁路运输业的航班信息和列车时刻表的查询,都...
    Leesper阅读 7,077评论 13 42
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,861评论 0 19