图解LeetCode236:Lowest Common Ancestor of a Binary Tree

文章目录如何确定两个节点的公共节点?代码实现总结二叉树最低公共祖先节点又是一道极为经典的算法题,同时也是面试官几乎用烂的一个题目,准备跳槽找工作的同学必知必会的一个面试题。这个题目的要求非常简单,求出给定两个二叉树节点的公共祖先,如下所示的二叉树,那么节点5和节点1的3,我们该怎样解决这个问题呢? 如何确定两个节点的公共节点?这个问题的关键点在于我们怎么就能确定某个节点是给定...
摘要由CSDN通过智能技术生成

二叉树最低公共祖先节点又是一道极为经典的算法题,同时也是面试官几乎用烂的一个题目,准备跳槽找工作的同学必知必会的一个面试题。

这个题目的要求非常简单,求出给定两个二叉树节点的公共祖先,如下所示的二叉树,那么节点5和节点1的3,我们该怎样解决这个问题呢?

在这里插入图片描述

 

如何确定两个节点的公共节点?

这个问题的关键点在于我们怎么就能确定某个节点是给定条件下的公共节点,从图中我们能快速的知道节点5和节点1的公共节点是3,节点6和节点7的公共节点是5,问题是你有没有想过,**你的大脑是如何知道节点6和节点7的公共祖先是5的?**如果你能清晰的描述清楚这个过程,那么代码自然就能写出来了。

我们来看看为什么节点6和节点7的最低公共祖先是5。其实很简单,原因就在于节点5和左子树中包含了节点6,节点5的右子树中包含了节点7;也就是说只要我们找到了一个节点,其左右子树中分别包含了两个给定的节点,那么这个节点就是我们要找的答案。

意识到以上的关键就在于你要去想“为什么你的大脑知道节点6和节点7的公共祖先是5”,你的大脑是如何找到答案的?实际上你的大脑是这样找到答案的:

  • 找到节点6的所有祖先节点,也就是5和3
  • 找到节点7的所有祖先节点,也就是2、5和3

那么很显然节点6和节点7的所有祖先节点从5开始就一样了࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值