这是第二次刷这个题目了,可见这个题目的考频有多高。这是一刷的地址剑指Offer——二叉树的最近公共祖先(JS实现)。
题目描述
解题思路
- 首先判断当前节点是null还是p还是q。
- null:直接返回null
- p:直接返回p
- q:直接返回q
- 递归遍历左右子树并接受返回值
- 如果左右子树返回的值都不为空,则说明当前的父节点就是最近公共祖先。反之则返回当前不为空的节点为最近公共祖先。
AC代码
var lowestCommonAncestor = function(root, p, q) { // 如果节点为空 返回null if (!root ) return null; if (root === p) return p; if (root === q) return q; let x = lowestCommonAncestor(root.left,p,q); let y = lowestCommonAncestor(root.right,p,q); if (x && y) { return root; } else { return x || y; } }; 复制代码
题目反思
- 学会使用递归的方式遍历二叉树并返回目标元素。