【刷题】二叉树的最近公共祖先,看了我的你才能看懂其他人的解释

62 阅读1分钟

lca(最近公共祖先)

递归的这个函数究竟什么意思

没有一个解说说了这个递归函数什么意思

默认都以为递归函数的意思是返回root节点下,p和q的lca, 而实际上这个递归函数表示

  1. p q都能找到,返回lca
  2. 能找到一个,返回找到的那个
  3. 都找不到,返回null

其他

每个解释上来就是 如果root等于p或者q,那么最近的公共祖先就是自己

凭啥啊???

image.png p,q=5,8 比如这个图,root到5的时候,root==5,凭啥公共祖先就是5啊

我百思不得其解, 终于后来想通了

你以为递归已经到lowestCommonAncestor(5,5,8),而实际上,这是根本不可能出现的一个情况,因为lowestCommonAncestor的含义就是p和q必须在root这个树上。

所以换一种思路想,如果root等于p或者q,那么另一个必然在这个树下的某个位置。