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

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

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

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

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

ブログ    

推薦する

...

強化学習と世界モデルにおける因果推論

1. 世界モデル「世界モデル」という用語は認知科学に由来しており、認知科学ではメンタルモデルと呼ばれ...

...

DrivingDiffusion: 最初のサラウンドワールド モデル: BEV データとシミュレーションの新しいアイデア!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

AIが独自に病気を診断できる場合、人間の医師は責任を回避できるのでしょうか?

健康診断のために病院に行くところを想像してください。診察室に入るとすぐに、看護師があなたの写真を撮り...

AIテキスト翻訳システムの品質が44%向上し、500億以上のパラメータを使用して200の言語を翻訳

Meta Platforms は本日、Meta が社内開発した、200 言語のテキストを翻訳できる人...

2021 年に注目すべき 27 の建設技術トレンド (パート 2)

テクノロジーは建設業界にかつてないほど大きな影響を与えています。クラウドベースのコラボレーションやデ...

第16回(2017年)中国政府ウェブサイトパフォーマンス評価結果発表および経験交流会議が北京で成功裏に開催されました。

2017年11月17日、中国情報産業発展センターの指導の下、中国ソフトウェア評価センターが主催し、...

予想外?今年の建国記念日に最も多く目にするのはドローンかもしれません!

[[426834]]国慶節のゴールデンウィークが近づいてきました。旅行の計画はお決まりですか?昨今...

李開復、胡宇、張亜琴の GMIC 2018 対談: AI 戦略と AI 人材育成における中国と米国の違いは何ですか?

[[227402]]人工知能が急成長を遂げている現在、AI人材の不足は中国だけでなく、世界全体が直...

...

Jupyter Notebookの3つの大きな欠点は、この新しいツールによってすべて補われています。

Jupyter は、機械学習とデータサイエンスの分野でよく知られるようになりました。メモ、コード、...

ソフトウェア開発を簡素化する 5 つの機械学習ツール

[51CTO.com クイック翻訳] 機械学習を使用する開発者の間での議論のほとんどは、AI ベース...

AIとIoTが交通管理をどう変えるのか

人工知能 (AI) とモノのインターネット (IoT) はどちらも、私たちの周りの世界で注目を集め始...