題目描述
給定一個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。
百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節點也可以是它自己的祖先)。”
思路
詳見連結
代碼
class Solution:
def __init__(self,x):
self.val = x
self.left = None
self.right = None
class Solution:
def lowestCommonAncestor(self,root:TreeNode,p:TreeNode,q:TreeNode):
if (root.val - p.val)*(root.val-q.val)<= 0:
return root
if p.val < root.val:
return self.lowestCommonAncestor(root.left,p,q)
return self.lowestCommonAncestor(root.right,p,q)