毎日のアルゴリズム: 二分木の最小共通祖先

毎日のアルゴリズム: 二分木の最小共通祖先

この記事はWeChatの公開アカウント「3分でフロントエンドを学ぶ」から転載したもので、著者はsisterAnです。この記事を転載する場合は、「3分で学ぶフロントエンド」公式アカウントまでご連絡ください。

木の基礎については、こちらをご覧ください: 初心者のための木

バイナリ ツリーが与えられた場合、ツリー内の指定された 2 つのノードの最下位の共通祖先を見つけます。

Baidu 百科事典では、LCA を次のように定義しています。「ルート付きツリー T 内の 2 つのノード p と q の場合、LCA は、x が p と q の両方の祖先であり、x の深さが可能な限り大きいノード x です (ノードはそれ自身の祖先になることもできます)。」

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

例1:

  1. 入力: root = [3,5,1,6,2,0,8, null , null ,7,4], p = 5, q = 1
  2. 出力: 3
  3. 説明: ノード 5 とノード 1 の LCA はノード 3 です。

例2:

  1. 入力: root = [3,5,1,6,2,0,8, null , null ,7,4], p = 5, q = 4
  2. 出力: 5
  3. 説明: ノード 5 とノード 4 の LCA はノード 5 です。定義上、LCA はノード自体になる可能性があるからです。

例:

  • すべてのノード値は一意です。
  • p と q は異なるノードであり、両方とも指定されたバイナリ ツリー内に存在します。

答え: 再帰実装

解決:

ツリーが空のツリーであるか、p または q のいずれかのノードがルート ノードである場合、p と q の最も近い共通ノードがルート ノードになります。

そうでない場合、つまりバイナリ ツリーが空のツリーではなく、p と q がルート以外のノードである場合は、左と右のサブツリーを再帰的にトラバースして、左と右のサブツリーの最も近い共通の祖先を取得します。

  • pノードとqノードが左右のサブツリーのLCAに存在する場合、pノードとqノードが左右のサブツリーのルートノードに分布していることを意味します。このとき、バイナリツリーのLCAはルート
  • 左のサブツリー内のノード p と q の LCP が空の場合、ノード p と q は左のサブツリーに配置され、最終的なバイナリ ツリーの LCP は右のサブツリー内のノード p と q の LCP になります。
  • 右サブツリー内のノード p と q の最新の共通祖先が空の場合、左サブツリー内のノード p と q の最新の共通祖先が空の場合と同じ判断ロジックが適用されます。
  • 左と右のサブツリー内の p ノードと q ノードの最も近い共通祖先が空の場合、null が返されます。

コード実装:

  1. const lowestCommonAncestor =関数(ルート、p、q) {
  2. if(root == null || root == p || root == q)ルートを返す
  3. const left = lowestCommonAncestor ( root.left , p, q)
  4. 定数right = lowestCommonAncestor(root.right , p, q)
  5. if(=== null )戻り値  
  6. if(=== null )戻り値  
  7. ルートを返す
  8. };

複雑性分析:

時間計算量: O(n)

空間計算量: O(n)

<<:  ロンドン警察は大量の顔認識技術を購入している

>>:  人工知能教育の現状と動向

ブログ    
ブログ    
ブログ    

推薦する

...

人工知能が「より賢くなる」ためには、計算能力をアップグレードする必要がある

人工知能に関する最新の報告書「2020-2021年中国人工知能コンピューティング力発展評価報告書」が...

孤独を研究していますか? Reddit のホットな話題: AI のゴッドファーザー、ヤン・ルカンが提案した「エネルギー モデル」とは一体何でしょうか?

「エネルギー自己教師学習っていったい何?」と多くのRedditネットユーザーがコメントした。ちょう...

モノのインターネットはスマートな衛生設備を創り出し、都市環境の衛生を細かく管理します

旅行のピーク時に都市環境衛生がより大きな圧力に耐えられるか?清掃車両と清掃作業員をより適切に管理する...

機械学習の運用が増加している

データにラベルを付け、正確な機械学習モデルを開発することはデータ サイエンティストにとって困難であり...

魔法の顔認識: たとえマスクやサングラスをかけていても、身近な人を認識できるのはなぜでしょうか?

見知らぬ人々の集団の中に見覚えのある人を見つけたり、とても見覚えのある顔を見かけたりします。その人は...

...

AIデコードと同じくらい魔法的? AIによるカラーリングはブラックテクノロジーなのか、それとも単なるジョークなのか?

画像処理の分野では、AIブラシがますます目立つようになってきています。以前、AIロスレス画像拡大、A...

【文字列処理アルゴリズム】文字列包含アルゴリズムの設計とCコード実装

1. 要件の説明長い文字列と短い文字列が与えられた場合、短い文字列のすべての文字が長い文字列に含まれ...

...

...

アメリカン・エキスプレスはAIを活用して不正行為を検出し、セキュリティを強化

アメリカン・エキスプレスは長年にわたり、人工知能と認知技術のリーダーとして活躍してきました。大規模で...

アルゴリズムを拒否することができます

[[419044]] 「ブラックミラー」には、新婚の夫を亡くした女性が、その悲しみを和らげるために企...

...

今後3~5年で、機械学習の人材が不足する領域はどこでしょうか?

基本的な紹介学術的なニーズを別にすれば、ほとんどの人はアルゴリズムの研究に従事するのではなく、第一線...