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

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

この記事は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)

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

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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

AI分野 | ゲームのルールを変える画期的なアイデア10選

[[357174]] AI の旅が始まって以来、私は無限の可能性を秘め、輝かしい歴史に足跡を残してき...

タオバオのメイン検索リコールシナリオにおけるマルチモーダル技術の探究

検索リコールは検索システムの基礎として、効果向上の上限を決定します。私たちが直面している主な課題は、...

Appleは以前から独自のChatGPT AIツールを開発してきた。

何年もの間、自社のソフトウェアとデバイスすべてに機械学習を統合してきたAppleは、WWDCでは自社...

ディープラーニングモデルは「大きいほど良い」というわけではなく、気候変動問題を引き起こす可能性がある

今月初め、OpenAIは、史上最大の人工知能モデルを構築したと発表した。これは「GPT-3」と名付け...

ベイジアンパーソナライズランキングアルゴリズムを1つの記事で理解する

[[260485]] [51CTO.com からのオリジナル記事] 哲学にさまざまな流派があるように...

...

ザッカーバーグはオープンソース AGI に全力を注ぐ: Llama 3 をトレーニング、35 万台の H100 を年末までに提供開始

ザッカーバーグ氏は新たな目標「すべてをオープンソースの AGI に」を発表しました。そう、ザッカーバ...

ノボ ノルディスクとマイクロソフトが提携し、糖尿病に関する質問に答えるロボットを開発

世界有数のバイオ医薬品企業であるノボ ノルディスクとマイクロソフトは、第3回中国国際輸入博覧会で、ノ...

ジェネレーティブAIを管理する方法

ドム・クッドウェル著ノアが編集制作:51CTO テクノロジースタック(WeChat ID:blog)...

ディープニューラルネットワークを使用して三体問題を1億倍速く解く

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

パフォーマンスが最大480倍向上:Armが2つの新しいAIエッジコンピューティングチップ設計を発表

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

創造性がデジタル変革を推進する

人工知能はビジネス環境を一新し、競争環境を変え、仕事の本質を変革しています。しかし、人間の創造性も ...

金融業界は AI を活用してデータを強化する準備ができているでしょうか?

金融業界は国民経済の生命線です。モバイルインターネットやオンライン決済の普及により、データは企業にと...