LeetCode 二叉樹,兩個子節點的最近的公共父節點
二叉樹

Lowest Common Ancestor of a Binary Tree
二叉樹的最近公共父親節點
https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree
https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree


/**
* 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 ancestor;
// DFS 深度優先搜索
const dfs = (root, p, q) => {
if (root === null) {
return false;
}
// 遞歸
const leftSon = dfs(root.left, p, q);
const rightSon = dfs(root.right, p, q);
if ((leftSon && rightSon) || ((root.val === p.val || root.val === q.val) && (leftSon || rightSon))) {
ancestor = root;
}
return leftSon || rightSon || (root.val === p.val || root.val === q.val);
}
dfs(root, p, q);
return ancestor;
};
solutions
- Recursive Approach
遞歸方法
- Iterative using parent pointers
使用父指針進行迭代
- Iterative without parent pointers
沒有父指針的迭代
refs
https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/solution/
https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/solution/
©xgqfrms 2012-2020
www.cnblogs.com 發布文章使用:只允許注冊用戶才可以訪問!
