序文 今回レビューする内容は、データ構造トピックの「ツリー」です。ツリーなどのデータ構造を見ると頭が痛くなる、理解しにくいという方は、この記事が参考になるかもしれません。 諺にあるように、何かを把握して理解したいのであれば、まずその概念や特性などを理解しなければなりません。 紹介ツリーは以下の点を中心に開発されています👇 木の基本概念
マインドマップ 👇 木の基本概念 ツリーは、ツリーのような構造を持つデータ セットをシミュレートするために使用されます。あるいは、これを「抽象データ構造」、つまりこの抽象データ型を実装し、ツリーのような構造プロパティを持つデータ セットをシミュレートするために使用されるデータ構造と考えることもできます。 Wikipedia の定義によれば、次のように理解できるようです。 これは、n (n>0) 個の有限ノードで構成される階層セットです。根が上を向き、葉が下を向いている逆さまの木のように見えることから「木」と呼ばれています。以下の機能があります:
このとき、写真を取り出して見る必要があります👇 図から、上記の5つの特徴がよくまとめられます。
木についての知識が少し得られたので、次は木に関する用語をいくつか理解する必要があります。 基本用語 基本的なツリー用語 より正式な要約については、Wikipedia の説明をご覧ください。
上記の図を組み合わせることで、これらの概念を理解することができます。 2 つを組み合わせることで、ツリーをより深く理解できるようになります。 上記の基本的な概念といくつかの専門用語を使用して、木を分類し、どのような種類の木があるのかを確認する必要があります。 木の種類 木の概念と基本的な用語を理解したので、次に木の種類について詳しく説明します。 分類の基準としてWikipediaを使うことができます👇
ツリーの分類が非常に多いため、それらを 1 つずつ習得する必要がありますか? 個人的には、最も単純で最も広く使用されているツリーの種類でもあるバイナリ ツリーの構造を習得すれば十分だと思います。 次に、バイナリツリーを紹介します。 二分木の概念 バイナリツリーは典型的なツリー構造です。名前が示すように、バイナリ ツリーは、各ノードに最大 2 つのサブツリー (通常は「左サブツリー」と「右サブツリー」と呼ばれます) が含まれるツリー構造です。 バイナリツリー この図の内容から判断すると、バイナリツリーの構造が明確に示されているはずです。 二分木の性質については、補足知識として下の図を参考にしてください。個人的には、ここがポイントではないと思います。 二分木の特性 重要なのは、そのトラバーサル方法を習得する必要があるということです。 二分木の走査 バイナリ ツリーをトラバースする一般的な方法は次の 3 つであることがわかっています。
どのようなトラバーサル手法でも、非再帰バージョンだけでなく、基本的なアルゴリズム スキルをテストする再帰バージョンも習得する必要があります。次に、再帰バージョンについて見てみましょう。 事前順序トラバーサル バイナリツリーの事前順序走査を練習するにはここをクリックしてください バイナリ ツリーのルート ノードが指定されると、そのノード値の「事前順序」トラバーサルが返されます。 偽のデータを模擬するとします👇
次に、事前順序探索の理解に基づいて、問題を解決するための疑似コードを書くことができます👇
非再帰バージョン 👇 非再帰の場合、ノードを格納するためのデータ構造を使用する必要があります。使用する必要があるのはスタックです。そのアイデアは参考になります👇
順序通りの走査 バイナリ ツリーが与えられた場合、その順序どおりのトラバーサルを返します。 例:
上級: 再帰アルゴリズムは単純ですが、反復アルゴリズムで実行できますか? 再帰バージョン 👇
非再帰バージョンについてはここでは説明しません。これは、事前順序トラバーサルと同じ考え方で、スタックを使用してノード情報を維持します。
その後のトラバース バイナリ ツリーが与えられた場合、その後順トラバーサルを返します。 例:
上級: 再帰アルゴリズムは単純ですが、反復アルゴリズムで実行できますか? 出典: LeetCode リンク: https://leetcode-cn.com/problems/binary-tree-postorder-traversal 著作権は LeetCode Network に帰属します。商用目的での複製については、正式な許可を得るためにお問い合わせください。非商用目的での複製については、出典を明記してください。 再帰バージョン 👇
非再帰バージョン 👇 実は、最初の2つをやると、ルーチンがあることがわかりますよ〜
バイナリツリーのレベルトラバーサル ⭐⭐ リンク: 二分木のレベル順走査 バイナリツリーが与えられた場合、「レベル順トラバーサル」によって取得されたノード値を返します。 (つまり、すべてのノードを左から右へ、レイヤーごとに訪問します)。 例: バイナリツリー: [3,9,20,null,null,15,7],
レベルトラバーサルの結果を返します:
出典: LeetCode リンク: https://leetcode-cn.com/problems/binary-tree-level-order-traversal 著作権は LeetCode Network に帰属します。商用目的での複製については、正式な許可を得るためにお問い合わせください。非商用目的での複製については、出典を明記してください。 再帰バージョン 👇
非再帰バージョン 👇 ここで使用されるのは、キュー データ構造と先入れ先出しメカニズムです。
トピックの概要 前にも言ったように、すべての問題を解けない場合は、残りの部分は LeetCode の練習に頼ることができます。また、一般的なバイナリ ツリーの問題セットもいくつか用意しました。問題の質は依然として良好です👇
|
<<: 人工知能と機械学習: フィンテック業界の新たな青写真
>>: 科学技術の力を感じる: 人工知能とスマートヘルスケアの 4 つの注目のアプリケーションの分析
アナリスト会社ガートナーは10月13日、2026年までに企業の80%以上が生成型AIアプリケーション...
今年の618が終わったばかりですが、宅配業者だけでなく、JDのインテリジェント配達ロボットも忙しかっ...
Responsible AI チームを発表した際、Microsoft の幹部は、Copilot は仕...
AI には、部屋に突然象が現れたなど、信じられないような異常を発見しながらも、それを冷静に受け入れる...
今年はAI分野で大規模言語モデル(LLM)が注目され、OpenAIのChatGPTやGPT-4が大人...
人工知能 (AI) と機械学習 (ML) は今や当たり前のものとなっています。 AI は人間の認知を...
[[225280]] 2018年度Google PhDフェローシップ(北米、ヨーロッパ、中東)の候...
「時期尚早な最適化は諸悪の根源である。」 —ドナルド・アーヴィン・クヌース、コンピュータ科学者、数...
Hugging Faceのオープンソース大型モデルのランキングがまた更新されました。今回のランキング...
パフォーマンス重視のコンテナ技術向けのツールとサービスを提供する Sylabs は、2024 年まで...
製造業からの温室効果ガス排出を削減する方法は複数あります。 製造業におけるデジタルデータの使用による...
産業用 IoT は、企業の神経系と考えることができます。つまり、生産工場のあらゆる場所から貴重な情報...