天天看點

LeetCode 235. 二叉搜尋樹的最近公共祖先(遞歸)

題目描述

給定一個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。

百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節點也可以是它自己的祖先)。”

LeetCode 235. 二叉搜尋樹的最近公共祖先(遞歸)

思路

詳見連結

代碼

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)