Jianzhiはインタビューの質問68-Iを提供します。二分探索ツリー(再帰的)(二分探索ツリー)の最も近い共通の祖先

タイトルの説明

二分探索木を与えられて、木で指定された2つのノードの最も近い共通の祖先を見つけます。
Baidu Encyclopediaの最新の公開祖先の定義は次のとおりです。「ルートツリーTの2つのノードpとqの場合、最新の公開祖先はノードxとして表され、xがpとqの祖先であり、xの深さができるだけ大きいことを満たします。 (ノードはそれ自体の祖先にすることもできます。)
たとえば、次の二分探索木が与えられた場合:root = [6,2,8,0,4,7,9、null、null、3,5]

ここに画像の説明を挿入

アイデア

詳細はリンクを参照してください

コード

class TreeNode:
	def __init__(self,x):
		self.val = x
		self.left = None
		self.right = None
		
class Solution:
	def lowestCommonAncestor(self,root,p,q):
		if p.val > q.val:
			min_ , max_ = q.val, p.val
		else:
			min_, max_ = p.val, q.val
		result = []
		def search(root,p,q):
			if root.val >= p and root.val <= q:
				reslut.append(root)
				return 
			if root.val > p and root.val > q:
				search(root.left,p,q)
			sele:
				search(root.right,p,q)
		search(root,min_,max_)
		return result[0]
227件のオリジナル記事を公開 633 件を賞賛 30,000回以上の閲覧

おすすめ

転載: blog.csdn.net/weixin_37763870/article/details/105424475