235-Lowest Common Ancestor of a Binary Search Tree
Description
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”
_______6______
/ \
___2__ ___8__
/ \ / \
0 _4 7 9
/ \
3 5
For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
問題描述
給定二叉排序樹, 找出兩個節點的最小公共祖先
問題分析
解法1
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q);
else if(root .val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q);
else return root;
}
}
解法2
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode tempRoot = root;
while (tempRoot != null) {
if(tempRoot.val < p.val && tempRoot.val < q.val) tempRoot = tempRoot.right;
if(tempRoot.val > p.val && tempRoot.val > q.val) tempRoot = tempRoot.left;
else return tempRoot;
}
return tempRoot;
}
}
相關文章
- 173. Binary Search Tree Iterator
- 669-Trim a Binary Search Tree
- Lowest Common Ancestor
- LeetCode 98. Validate Binary Search TreeLeetCode
- 501-Find Mode in Binary Search Tree
- [leetcode]convert-sorted-array-to-binary-search-treeLeetCode
- [LeetCode] 501. Find Mode in Binary Search TreeLeetCode
- 108-Convert Sorted Array to Binary Search Tree
- LeetCode 501. Find Mode in Binary Search TreeLeetCode
- 二分搜尋樹(Binary Search Tree)
- Java for LeetCode 109 Convert Sorted List to Binary Search TreeJavaLeetCode
- [LeetCode] 109. Convert Sorted List to Binary Search TreeLeetCode
- 二叉搜尋樹(Binary Search Tree)(Java實現)Java
- Traversals of binary tree
- 如何在Java中實現二叉搜尋樹( binary search tree)?Java
- Leetcode Binary Tree PathsLeetCode
- [LintCode] Binary Tree Level Order
- 545. Boundary of Binary Tree
- 257. Binary Tree Paths
- Construct String from Binary TreeStruct
- [LintCode] Check Full Binary Tree
- 257-Binary Tree Paths
- 543-Diameter of Binary Tree
- 563-Binary Tree Tilt
- 655-Print Binary Tree
- 654-Maximum Binary Tree
- 814-Binary Tree Pruning
- 110-Balanced Binary Tree
- 226-Invert Binary Tree
- 104. Maximum Depth of Binary Tree
- LeetCode 543. Diameter of Binary TreeLeetCode
- Binary Tree Level Order Traversal [LEETCODE]LeetCode
- LeetCode545.Boundary-of-Binary-TreeLeetCode
- Leetcode 226. Invert Binary TreeLeetCode
- [leetcode]binary-tree-inorder-traversalLeetCode
- [leetcode]maximum-depth-of-binary-treeLeetCode
- 662. Maximum Width of Binary Tree
- [LeetCode] 226. Invert Binary TreeLeetCode