LeetCode第235题Lowest Common Ancestor of a Binary Search Tree
Lowest Common Ancestor of a Binary Search Tree
Lowest Common Ancestor of a Binary Search Tree给定一个二叉搜索树,找到树中两个给定结点的最近公共祖先结点LCA。
Example
Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
Output: 6
Explanation: The LCA of nodes 2 and 8 is 6.
这一题和236题Lowest Common Ancestor of a Binary Tree有些相似,二叉搜索树是二叉树的一种,所以236题的解法也适用于这题。特别的是,二叉搜索树中根节点的值大于左子树的节点值,小于右子树的节点值,这是可以利用的一个性质:
- 我们记
LCA(2,8) = 6
,此时节点p
和q
是2和8,我们将节点值与根节点值6进行比较,发现p
和q
分别位于根节点左右两侧,此时根节点6是最近祖先。 - 我们记
LCA(7,9) = 8
,此时节点p
和q
是7和9,我们将节点值与根节点值6进行比较,发现p
和q
都大于根节点,都位于右子树,于是,我们进入右子树进行遍历,此时原来右子树的根节点8成为新的根节点,继续遍历比较。
Solution
下面是Java
的代码:
/** |
下面是Python
的代码:
# Definition for a binary tree node. |
总结
第235题是简单题,利用二叉搜索树的性质,通过递归可以写出美感较强的代码,易于阅读。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WenQian Dong's Web!