序文 今回レビューする内容は、データ構造トピックの「ツリー」です。ツリーなどのデータ構造を見ると頭が痛くなる、理解しにくいという方は、この記事が参考になるかもしれません。 諺にあるように、何かを把握して理解したいのであれば、まずその概念や特性などを理解しなければなりません。 紹介ツリーは以下の点を中心に開発されています👇 木の基本概念
マインドマップ 👇 木の基本概念 ツリーは、ツリーのような構造を持つデータ セットをシミュレートするために使用されます。あるいは、これを「抽象データ構造」、つまりこの抽象データ型を実装し、ツリーのような構造プロパティを持つデータ セットをシミュレートするために使用されるデータ構造と考えることもできます。 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 つの注目のアプリケーションの分析
透明性は、倫理的なビジネス上のジレンマにおいて重要な役割を果たすことがよくあります。情報が多いほど、...
[[406810]] [51CTO.com クイック翻訳]人工知能技術は企業が行うビジネスにとって...
ビデオ メタデータの分析と使用は、セキュリティにおける現在の多くの刺激的な開発の基盤となっています。...
数日前に話題になった「中国ビッグモデル「トップストリームグループチャット」ノート」を見た人は多いはず...
人工知能 (AI) と機械学習 (ML) は、人々の働き方、話し方、ビジネスのやり方を根本的に変えて...
21 世紀が近づくにつれ、各国の成功または失敗はもはや国民と政府指導者だけに依存するものではなくなり...
ショートビデオの推奨やソーシャル推奨などのアプリケーションシナリオでは、推奨システムは大量の急速に変...
大規模言語モデルのもう一つの重大な欠陥が DeepMind によって明らかにされました。 LLM は...
人工知能の時代におけるセキュリティ専門職は何かという問題は、徐々に人々が直面しなければならない問題に...
この 6 部構成のシリーズでは、AI の人類史を探り、革新者、思想家、労働者、さらには小規模なトレー...
9月10日、テンセントクラウドは9月7日に開催された2023テンセントグローバルデジタルエコシステム...
人工知能 (AI) と機械学習 (ML) は、現代のソフトウェア開発の重要な部分になりつつあります。...