var lowestCommonAncestor = function(root, p, q) { let ans; const dfs = (root, p, q) => { if (root === null) return false; const lson = dfs(root.left, p, q); const rson = dfs(root.right, p, q); // 这个为什么是 || 关系 if ((lson && rson) || ((root.val === p.val || root.val === q.val) && (lson || rson))) { ans = root; } return lson || rson || (root.val === p.val || root.val === q.val); } dfs(root, p, q); return ans;};
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//** * @param {TreeNode} root * @return {number} */var maxDepth = function(root) { var dfs = (root) => { if (!root) { return 0 } return 1 + Math.max(dfs(root.left), dfs(root.right)) } return dfs(root)};
var combine = function(n, k) { const ans = []; const dfs = (cur, n, k, temp) => { // 剪枝:temp 长度加上区间 [cur, n] 的长度小于 k,不可能构造出长度为 k 的 temp if (temp.length + (n - cur + 1) < k) { return; } // 记录合法的答案 if (temp.length == k) { ans.push(temp); return; } // 考虑选择当前位置 dfs(cur + 1, n, k, [...temp, cur]); // 考虑不选择当前位置 dfs(cur + 1, n, k, temp); } dfs(1, n, k, []); return ans;};
var simplifyPath = function(path) { const names = path.split("/"); const stack = []; for (const name of names) { if (name === "..") { if (stack.length) { stack.pop(); } } else if (name.length && name !== ".") { stack.push(name); } } return "/" + stack.join("/");};