Day119 | 灵神 | 二叉树 | 二叉树的最近共公共祖先
Day119 | 灵神 | 二叉树 | 二叉树的最近共公共祖先
236.二叉树的最近共公共祖先
236. 二叉树的最近公共祖先 - 力扣(LeetCode)
思路:
二叉树的最近公共祖先【基础算法精讲 12】_哔哩哔哩_bilibili
首先我们采用后序遍历
递归函数返回值是问是「最近公共祖先的候选项」。对于最外层的递归调用者来说,返回值是最近公共祖先的意思。但是,在递归过程中,返回值可能是最近公共祖先,也可能是空节点(表示子树内没找到任何有用信息)、节点 p 或者节点 q(可能成为最近公共祖先,或者用来辅助判断上面的某个节点是否为最近公共祖先)。
1.当前节点的是空节点
那就返回空
2.当前结点是p或者q,直接返回当前结点就行
比如5是p,4是q,那么我们遍历到5就直接返回5就行,因为5是5和4的最近公共祖先
3.如果左右子树都有的话,也就是pq分别在这当前结点的左右子树,那么最近公共祖先就是当前结点
4.如果只在左子树中找到了q或者p,那说明最近公共祖先肯定在左子树,返回遍历左子树的结果就行
右子树是同理的
5.当前结点的左右子树都没找到p或者q,那说明在其他的子树
返回nullptr
完整代码:
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Darlingの妙妙屋!
评论