[LeetCode]バイナリ検索ツリーの最も低い共通の祖先



Lowest Common Ancestor Binary Search Tree



バイナリツリーが与えられた場合、ツリー内の2つの与えられたノードの最も低い共通祖先(LCA)を見つけます。

による ウィキペディアでのLCAの定義 :「最下位の共通祖先は、2つのノードvとwの間で、vとwの両方を子孫として持つTの最下位ノードとして定義されます(ノードをそれ自体の子孫にすることができます)。」



次の二分探索木があるとします。root= [3,5,1,6,2,0,8、null、null、7,4]

5

例1:



1

例2:

3.

最も低い共通の祖先ノードを探す二分探索木

二分探索木の性質に応じて:親ノードよりも小さいノードの左側のサブツリーで、大きい親ノードよりも右側のサブツリーノードにあります。



最も低い共通祖先の2つのノード:ノードのサブツリーに表示される2つのノードを指します。ツリートラバーサルのルートから開始できます。各ノードはノードをトラバースして、2つの入力サブツリーがそれぞれサブツリーにあるかどうかを判断します。すべてのノードをトラバースし、そのサブツリー内の2つの入力ノードかどうかを判断します。サブツリーが同時に入力ノードである最初のノードが2つの子ノードで構成されるまでは、含まれていませんでした。その場合、ノードは最も低い共通の祖先です。

再帰

5

反復

4