题目:
输入一棵数的两个结点,返回这两个结点的最低公共祖先
解法:
分析:如果是二叉树,可以使用递归的思路,从根结点开始,如果两个结点分布在左右两颗子树上,则即为所求;如果都在左子树,递归搜索左子树;如果都在右子树,递归搜索右子树。
如果是一般的树,通过保存根节点到输入结点的路径,然后求这两条路径的最后一个公共子节点即可。问题的关键就在于求得这个路径:从根节点开始,深度优先遍历根节点的所有子节点,如果遇到了输入结点,即求得了路径。
题目:
输入一棵数的两个结点,返回这两个结点的最低公共祖先
解法:
分析:如果是二叉树,可以使用递归的思路,从根结点开始,如果两个结点分布在左右两颗子树上,则即为所求;如果都在左子树,递归搜索左子树;如果都在右子树,递归搜索右子树。
如果是一般的树,通过保存根节点到输入结点的路径,然后求这两条路径的最后一个公共子节点即可。问题的关键就在于求得这个路径:从根节点开始,深度优先遍历根节点的所有子节点,如果遇到了输入结点,即求得了路径。
本文标题:剑指offer 面试题50:树中两个结点的最低公共祖先
本文链接:https://www.haomeiwen.com/subject/wipjdttx.html
网友评论