LeetCode 题解(185): Lowest Common Ancestor of a Binary Search Tree
来源:互联网 发布:西城区2016年经济数据 编辑:程序博客网 时间:2024/06/11 17:01
题目:
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 allowa 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.
利用BST的特性。
C++版:
class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(p->val == q->val) return p; if(p->val > q->val) return LCA(root, q, p); else return LCA(root, p, q); } TreeNode* LCA(TreeNode* root, TreeNode* low, TreeNode* high) { if(root->val >= low->val && root->val <= high->val) return root; if(root->val == low->val || root->val == high->val) return root; if(root->val > high->val) return LCA(root->left, low, high); if(root->val < low->val) return LCA(root->right, low, high); }};
Java版:
public class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(p.val == q.val) return p; if(p.val > q.val) return LCA(root, q, p); return LCA(root, p, q); } public TreeNode LCA(TreeNode root, TreeNode low, TreeNode high) { if(root.val >= low.val && root.val <= high.val) return root; if(root.val == low.val || root.val ==high.val) return root; if(root.val > high.val) return LCA(root.left, low, high); return LCA(root.right, low ,high); }}
Python版:
class Solution: # @param {TreeNode} root # @param {TreeNode} p # @param {TreeNode} q # @return {TreeNode} def lowestCommonAncestor(self, root, p, q): if p.val == q.val: return p if p.val > q.val: return self.LCA(root, q, p) else: return self.LCA(root, p, q) def LCA(self, root, low, high): if root.val >= low.val and root.val <= high.val: return root if root.val == low.val or root.val == high.val: return root if root.val > high.val: return self.LCA(root.left, low, high) elif root.val < low.val: return self.LCA(root.right, low, high)
0 0
- LeetCode题解:Lowest Common Ancestor of a Binary Search Tree
- LeetCode题解:Lowest Common Ancestor of a Binary Search Tree
- LeetCode题解:Lowest Common Ancestor of a Binary Search Tree
- LeetCode 题解(185): Lowest Common Ancestor of a Binary Search Tree
- LeetCode 236. Lowest Common Ancestor of a Binary Tree 题解
- leetcode 235: Lowest Common Ancestor of a Binary Search Tree
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- leetcode: Lowest Common Ancestor of a Binary Search Tree
- [leetcode][dfs] Lowest Common Ancestor of a Binary Search Tree
- [leetcode] 235.Lowest Common Ancestor of a Binary Search Tree
- 【LeetCode】235 Lowest Common Ancestor of a Binary Search Tree
- [LeetCode]235.Lowest Common Ancestor of a Binary Search Tree
- leetcode 235 Lowest Common Ancestor of a Binary Search Tree
- [leetcode] Lowest Common Ancestor of a Binary Search Tree
- LeetCode Lowest Common Ancestor of a Binary Search Tree
- leetCode(38):Lowest Common Ancestor of a Binary Search Tree
- leetcode-235-Lowest Common Ancestor of a Binary Search Tree
- [LeetCode]Lowest Common Ancestor of a Binary Search Tree
- LeetCode 题解(183): Valid Anagram
- iOS部分-UI基础控件 - 01天 入门 第02课 加法计算器的实现
- LeetCode 题解(184): Delete Node in a Linked List
- UINavigationItem UINavigationBar 关系分析
- iOS开发- tintColor 与backgroundColor区别研究
- LeetCode 题解(185): Lowest Common Ancestor of a Binary Search Tree
- POJ3255-Roadblocks-dijkstra求次短路
- 生活杂谈:从Z149到Z78随笔
- 【Leetcode】Gas Station #134
- LeetCode 题解(186): Palindrome Linked List
- eiqzqfwu
- android(4) 使用ViewPaper 以及这几年来的一些感悟
- 第一次在spark环境下运行jar包
- Recover Rotated Sorted Array