Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
バイナリ検索ツリー (BST) が与えられた場合、BST 内の 2 つの指定されたノードの最下位共通祖先 (LCA) ノードを検索します。
によると、 WikipediaにおけるLCAの定義: 「最下位共通祖先は2つのノード間で定義されます p
そして q
最下位ノードとして T
両方を兼ね備えた p
そして q
子孫として( 自身の子孫となるノード)」
例 1:
入力: 根 = [6,2,8,0,4,7,9,null,null,3,5]、p = 2、q = 8 出力: 6 説明: ノード 2 と 8 の LCA は 6 です。
例 2:
入力: 根 = [6,2,8,0,4,7,9,null,null,3,5]、p = 2、q = 4 出力: 2 説明: LCA 定義によれば、ノードは自身の子孫になることができるため、ノード 2 と 4 の LCA は 2 です。
例 3:
入力: 根 = [2,1]、p = 2、q = 1 出力: 2
制約:
- ツリー内のノードの数は範囲内です
[2, 10 5 ]
. -10 9 <= ノード値 <= 10 9
- 全て
Node.val
は 個性的. p != q
p
そしてq
BST に存在します。
パイソン
# バイナリ ツリー ノードの定義。 # クラス TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None クラス ソリューション: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': p.val < root.val かつ q.val < root.val の場合: self.lowestCommonAncestor(root.left, p, q) を返します p.val > root.val かつ q.val > root.val の場合: self.lowestCommonAncestor(root.right, p, q) を返します root を返します