/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @param {TreeNode} p * @param {TreeNode} q * @return {TreeNode} */ var lowestCommonAncestor = function(root, p, q) { let la = null const traversal = function(root, p, q) { let set1 = [], set2 = [] if (root.left !== null) set1 = traversal(root.left, p, q) if (root.right !== null) set2 = traversal(root.right, p, q) let set3 = new Set([...set1, ...set2]) if (root === p || root === q) set3.add(root) if (set3.has(p) && set3.has(q)) { la = root; return [] } return set3 } traversal(root, p, q) return la }