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

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

この記事は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プラットフォームを選択する際の4つの視点

多くの企業は、顧客エンゲージメントと収益を向上させるための会話型 AI の重要性を急速に認識し始めて...

機械学習について学びたい方はこちらをご覧ください。1ステップで専門家になる方法をお教えします!

パターン認識や機械学習のファンであれば、機械学習では避けられない重要な問題であるサポートベクターマシ...

この方法を使えば誰でもLeetCodeで1位を獲得できる(再現可能)

数日前、GPT を使用して LeetCode の問題を練習し、アルゴリズムを学び、アイデアを刺激し、...

OpenAIはAIモデルのトレーニング用データセットを生成するパートナーを募集している

IT Homeは11月10日、OpenAIがAIモデルのトレーニング用にパブリック/プライベートデー...

生成的敵対ネットワーク (GAN) の未解決の 7 つの謎

いくつかの指標によれば、生成的敵対的ネットワーク (GAN) の研究は過去 2 年間で大きな進歩を遂...

Googleの検索アルゴリズムがユーザーをより深く理解する方法

Googleは現在、コア検索アルゴリズムに変更を加えており、検索結果の最大10分の1のランキングに影...

AI を活用したハイパーオートメーションがビジネス効率を向上させる方法

AI とハイパーオートメーションに期待するのには十分な理由があります。AI には、人間の思考や関連す...

クロスカメラトラッキングと「スマート」な眼認識技術戦略の研究と実装

ラボガイド現在、公共の場や個人の応用場面に設置されている監視カメラの総数は1億7500万台を超えてい...

韓国はLK-99の室温超伝導は証明できないと信じており、国内チームは拡張された材料が魔法のような特性を持っていると信じている

韓国でセンセーショナルな「常温超伝導」事件が最近終息したようだ。韓国超伝導低温学会の検証委員会は最近...

機械翻訳と人工知能が融合すると、信頼性は高まるでしょうか?

機械翻訳というと、多くの人が戸惑うでしょう。10年以上も前には、英語の文章をKingsoft Pow...

AIと自動化によるセキュリティの向上

2020年に突如発生した新型コロナウイルス感染症のパンデミックにより多くの従業員が自宅待機を余儀なく...

マイクロソフト、ヘルスケア業界がデータの価値を解き放つための新しい AI ソリューションをリリース

ヘルスケア業界とそのサービス技術が急速に発展するにつれて、大量のデータと情報が生成されます。統計レポ...

ロボットやAIが事故を起こした場合、誰が責任を負うのでしょうか?

[[348005]]自動運転車が歩行者をはねた場合、法的責任を負うのは誰でしょうか?所有者、製造者...

デジタルマーケティングにおけるAI革命

ほんの数年前までは、マーケティングに特化した AI エンジンがマーケティングの未来につながると信じて...

データマイニング分野における 10 の古典的なアルゴリズム - ナイーブ ベイズ アルゴリズム (コード付き)

導入ナイーブ ベイズ アルゴリズム (ナイーブ ベイズ アルゴリズムとも呼ばれます)。ナイーブ: 条...