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

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

[[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アルゴリズムを使って従業員の採用と解雇を行っている

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

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

推薦する

IBM、次世代AI開発をメインフレームに移行するための更新されたツールスイートをリリース

IBMは木曜日、メインフレーム開発者向けに最近発表した生成型AIコーディング機能をベースに、古いデー...

AIがAIを攻撃、サイバーセキュリティ戦争が激化

最近のサイバーセキュリティ会議では、調査対象となった業界専門家100人のうち62人が、AIを活用した...

将来、人工知能は人類を脅かすのか?人工知能が「暴走」するのを防ぐ6つの戦略

ロボットが人類の脅威にならないようにする6つの戦略ウィル・スミス主演のアメリカ映画「アイ,ロボット」...

AI バイアスは、偏見のない視点を必要とする未解決の問題でしょうか?

[[418851]] [51CTO.com クイック翻訳]非常に複雑な技術的アプリケーションで A...

大量のニューロンを必要とせず、ニューロモルフィックロボットはスピードと正確さでテーブルサッカーをプレイします

人間は機械にゲームをさせることに魅了されているようだ。1770 年という早い時期に、発明家たちは「ト...

...

AIシステムのセキュリティテストのための自動化ツール

高度なサイバー攻撃が増加していることから、サイバーセキュリティは今日マイクロソフトにとって最優先事項...

人工知能業界マップと主要なブレークスルー

Sage の予測によると、人工知能の出現により、2030 年までに世界の GDP がさらに 14% ...

スマート音声アシスタントの未来

人工知能は、スマート音声アシスタントが私たちの日常生活でどのように使用されるかを真に変えましたが、私...

AI導入の最大の障壁:熟練した専門家の不足

VentureBeat によると、人工知能 (AI) が革命的なメリットをもたらしたという点について...

GitHub のホット プロジェクト: 実稼働レベルのディープラーニング プロジェクトを構築するには?

ディープラーニング モデルを本番環境に導入することは、優れたパフォーマンスのモデルをトレーニングする...

2023 年のエンタープライズ AI トレンド トップ 10

2022 年の AI に関する大きな話題は、研究室や概念実証から生まれ、ビジネス価値を獲得するため...

...

人工知能によって作られた、素晴らしい美しさと能力を持つ美しいロボット

我が国初の自主開発人工知能美容ロボットも誕生しました。その皮膚は先進的なシリコンで作られており、まる...

モデルはわずか7M:軽量で高精度な顔認識方式DBFace

わずか 7M サイズのこの顔認識モデルは、世界最大の自撮り写真に写っているほぼすべての人物を認識しま...