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

タイトルの説明

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

ここに画像の説明を挿入

アイデア

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

コード

class Solution:
	def lowestCommonAncestor(self,root,p,q):
		if not root or root.val ==p or root.val == q:
			return root
		left = self.lowestCommonAncestor(root.left,p,q)
		right = self.lowestCommonAncestor(root.right,p,q)
		
		if not left:
			return right
		if not right:
			return left
		return root
227件のオリジナル記事を公開 633 件を賞賛 30,000回以上の閲覧

おすすめ

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