タイトルの説明
バイナリツリーを指定して、ツリー内の指定された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