毎日のアルゴリズム: 二分木のレベルトラバーサル

毎日のアルゴリズム: 二分木のレベルトラバーサル

[[423982]]

バイナリ ツリーが与えられた場合、そのノード値のボトムアップ レベルのトラバーサルを返します。 (つまり、リーフノードが配置されているレイヤーからルートノードが配置されているレイヤーまで、左から右にトラバースします)

例えば、二分木[3,9,20,null,null,15,7]が与えられた場合、

3

/ \

9 20

/ \

15 7

ボトムアップ レベルのトラバーサルを次のように返します。

  1. [
  2. [15,7]、
  3. [9,20]、
  4. [3]
  5. ]

解決策 1: BFS (幅優先探索)

BFS は、各レイヤーのノードをレイヤーごとに走査します。この質問では各レイヤーのノード値を返す必要があるため、BFS はこの問題に非常に適しています。 BFS は補助構造としてキューを使用する必要があります。まずルート ノードをキューに入れてから、キューのトラバースを続けます。

  1. const levelOrderBottom =関数(ルート) {
  2. if(!root) return []
  3. res = []とします。
  4. キュー = [ルート]
  5. while(キューの長さ) {
  6. curr = []とします。
  7. 温度= []
  8. while(キューの長さ) {
  9. ノードをキュー.shift() にします。
  10. curr.push(ノード.val)
  11. if( node.left ) temp.push ( node.left )
  12. if( node.right ) temp.push ( node.right )
  13. }
  14. res.push(カレント)
  15. キュー =一時 
  16. }
  17. res.reverse()を返す
  18. };

複雑性分析

  • 時間計算量: O(n)
  • 空間計算量: O(n)

ソリューション 2: DFS (深さ優先探索)

DFS は、ツリーのノードをその深さに沿ってトラバースし、ツリーのブランチを可能な限り深く検索します。

この問題における DFS の主な問題は、DFS がレベルを横断しないことです。再帰プロセス中に同じレベルのノードを同じリストに配置するには、再帰中に各ノードの深さを記録する必要があります。新しいノードに再帰する場合は、深さに対応するリストの最後にノードを配置します。

新しい深度 depth にトラバースするときに、depth に対応するリストが最終結果 res に作成されていない場合は、深度のすべてのノードを保存するために res に新しいリストを作成する必要があります。

  1. const levelOrderBottom =関数(ルート) {
  2. 定数res = []
  3. var dep =関数(ノード、深さ){
  4. if(!ノード)戻り値 
  5. res[深さ] = res[深さ]||[]
  6. res[深さ].push(node.val)
  7. dep(ノード.left , 深さ+1)
  8. dep(ノード.right 、深さ + 1)
  9. }
  10. dep(ルート, 0)
  11. res.reverse()を返す
  12. };

複雑性分析:

  • 時間計算量: O(n)
  • 空間計算量: O(h)、ここでhは木の高さ

<<:  ボーダーライン上の質問:テクノロジー企業はAIアルゴリズムを使って従業員の採用と解雇を行っている

>>:  二分木の再帰的および非再帰的トラバーサルアルゴリズムテンプレート

ブログ    
ブログ    

推薦する

北京はインターネット診断と治療の監督を強化し、AIによる処方箋の自動生成を厳しく禁止する

8月21日、北京日報によると、北京市衛生健康委員会は最近、「北京市インターネット医療監督実施弁法(試...

...

スマートビルと建築技術の未来

[[436407]]私たちの世界は、テクノロジーの進歩により急速な変化を経験し続けています。 テクノ...

SupFusion: 香港中文大学の最新の LV 融合による 3D 検出用新 SOTA!

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

機械学習は自動化を成功させる鍵となるのでしょうか?

機械学習 (ML) は情報技術 (IT) の柱の 1 つであり、人工知能のサブセットとして定義できま...

コンテナで AI アプリケーションを実行する際に知っておくべき 6 つの原則

現在、IT 開発の 2 つの中核トレンドとして、AI/ML とコンテナが企業で広く利用されています。...

GPT-4 に追いつく!李開復のYi-34Bの新しい結果が発表されました:勝率94.08%はLLaMA2などの主流の大型モデルを超えています

GPT-4に次ぐ、李開復のYi-34B-Chatの最新成果が発表されました——アルパカ認定モデル部門...

...

「あなたは私の中にいて、私はあなたの中にいる」人工知能はビッグデータと恋愛関係になりたい!

最近では、「ビッグデータ」や「人工知能」ほどよく使われる流行語はほとんどありません。多くのデータ分析...

AIは人類にとって脅威でしょうか?人工知能には強いものと弱いものがあるが、本当の危険は強い人工知能である

近年、科学技術分野で最もホットな言葉は人工知能であり、これは近年の人工知能の急速な発展によるものです...

CNN、RNN、GAN とは何ですか?ついに誰かが明らかにした

[[334740]] 01 完全に接続されたネットワーク完全に接続された高密度の線形ネットワークは、...

OpenAI が GPT-5 の商標登録を申請: すでに開発計画に入っているのか?

GPT-4 のリリースから半年も経たないうちに、GPT-5 がもうすぐ登場するのでしょうか?最近、...

...

不気味な人工知能はいつでもあなたが何を考え、何を見ているかをスパイできる

日本の科学者たちは、驚くほどの正確さで脳内を覗き込むことができる不気味な機械を開発した。この AI ...