20182333概要を学習の2019-2020-1「オブジェクト指向プログラミングとデータ構造、」第九週

20182333概要を学習の2019-2020-1「オブジェクト指向プログラミングとデータ構造、」第九週

コンテンツ概要を学びます

章XVIツリー

ツリー

  • 1.ツリー階層として編成非線形構造要素であります

  • 2.ツリーの任意のノードのツリーは、サブ内のノードの最大数を表します。
  • 高さM元素の3バランスn進ツリーはlognmあります
  • ツリーをトラバース4. 4つの方法があります。
  • 5.ツリー内のキューの巡回シーケンス記憶素子を採用
  • 位置がバイナリ配列、右の子(2 *(N + 1))である左の子位置(2N + 1)の位置nにおける要素を達成6
  • 7.ツリーベースのストレージアレイの実装鎖は配列内の連続した位置を含んでもよく、関係なくツリーの完全ツリーありません
  • 木の用途に応じて、一般的なバイナリーツリーに要素を追加および削除する方法8.
  • 9.決定木を使用すると、エキスパートシステムを設計することができます

二進木

  • バイナリ1のバイナリ検索ツリーは、その中に各ノードに対して、親ノードの値の左の部分木の要素よりも小さい場合には、親ノードの右の部分木の二つの要素に等しい値よりも大きいです
  • 2.ない他の動作場合、ツリーのバイナリ検索ツリーは、要素の添加順序によって決定されます
  • 要素を比較するとき、それぞれの半分は除外することができるので、二分探索木をバランス3.最も効果的な
  • 二分探索木からあなたの削除要素は比較的単純でそのうちの2つが3例、中に考慮すべき4。
  • 5.二分探索木の2つのつの子ノードから削除されたノードが存在する場合は、より良いアプローチが後継者を置き換えるためにそれを使用することです
  • 6.あなたはバランスを回復するために、バイナリ検索ツリーを回転させることができます

パート式

  • 1. 2 ^(I-1)(I> = 1)にi層までのノードの最初の二進数
  • 2.ほとんどの2 ^ K-1ノードの深さkのバイナリツリー(I> = 1)
  • 前記少なくともLOG2(N + 1)を含むN個のノードのバイナリツリーの高さ
  • 端末ノードN0の数は、次数2のノード数は、次にN0 = N2 + 1、N 2である二分木のいずれにおいて4.。

章XVIIバイナリ検索ツリー

バイナリ検索ツリー

バイナリ検索ツリーで:

若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

叶节点的左、右子树也分别为二叉查找树。

没有键值相等的节点。

加除

次善の反対のバイナリでは、バイナリ・ソートツリーは、動的ツリーテーブルです。ツリーは通常発生しないが、検出プロセスにおいて、キーワードが所定の値に等しいときに挿入されたツリーノードに存在しない:これは、によって特徴づけられます。新たに挿入されたノードは、新たに追加されたリーフノードであること、および失敗した訪問左の子か右の子ノードを探すときに検索するパス上の最後のノードである必要があります。

  • 1.まず、補間ノードの父ノードを識別するための検索アルゴリズムを実行します。

    補間ノードは、左と右の息子父ノードであると判断されます。ノード挿入ノードのリーフとして挿入されます。

    バイナリツリーが空の場合。ルートノードは、最初に別々に生成します。まず、補間ノードの父ノードを識別するために、検索アルゴリズムを実行します。

    補間ノードは、左と右の息子父ノードであると判断されます。ノード挿入ノードのリーフとして挿入されます。

    バイナリツリーが空の場合。ルートノードは、最初に別々に生成します。

  • 2.ノード削除アルゴリズム

    3例で説明したノードを削除することによって、バイナリソートツリーで:

    1.ノードがリーフノードである場合は、左の部分木と右のサブツリーは、空の木です。リーフノードを削除するとツリー全体の構造を破壊しないので、あなたはこのサブノードを削除することができます。

    2.長いためか、直接その親ノードまたは左のサブツリー右部分木として缶のように、ノードだけ左または右のサブツリーサブツリーその場合は、この時、この変更は、バイナリ・ソートツリーの特性を破壊しないよう。

    3.ノードの左部分木と右の子がいない場合はnull。不変の他の要素との間の相対的な位置を維持するために、ノードを削除した後、保持は、秩序ある調整を先行予約することができ、即時先行ノード(または直接後継)を作ることができるノードの代わりに、その後のその直接の前身(または直接の後継)を削除することによって、バイナリ・ソートツリーの左部分木のノード(もしあれば)左下ほとんどのノード(もしあれば)の左部分木のノードになり、LETを作ることです親ノードノードノードになることについてのサブツリーを残しました。

平衡二分探索木

  • 1.平衡二分探索木は、平衡条件で二分探索木です。
  • 2.平衡条件:左サブツリーの各ノードの高さの差と1つのバイナリ検索ツリー(空の木の高さ-1)までの右サブツリー
  • 3.思想:バランスの取れたバイナリツリーのバランスのバランスを破壊した後、バイナリツリーに挿入する新しいノード。私たちは、最初の最小のサブツリーのルートの新しいノードを挿入した後、バランスのポインタアウトを見つける必要があります。その後、新たな平衡サブツリー作り、関連するサブツリーのノード間のリンク関係を調整します。不均衡を調整することなく、すべての他のサブツリー最小ツリーバランスサブツリー、元に調整されたときにアウトバランスの、全体のバイナリソートツリーは、バランスの取れた二分木になっています。
  • 4.右回転

    如果由根的左子结点的左子树上的长路径而带来的不平衡性。将执行步骤:
      令根的左子结点变为新的根。
      令原根结点变为新的根结点的右子结点。
      令原根的左子结点的右子结点变为原根的结点的新的左子结点。
  • 5.左回転

 如果由根的右子结点的右子树上的长路径而带来的不平衡性。将执行步骤:
   令根的右子结点变为新的根。
   令原根结点变为新的根结点的左子结点。
   令原根的右子结点的左子结点变为原根的结点的新的右子结点。
  • 6.右 - 左回転

    不均衡がトリガー長いパスのルートノードの右の子の左の部分木である場合は、そのツリーの右回転の周りに異常な子は一回行われ、その後、周りの再実行と回転を残している必要があります。
  • 7.左 - 右回転

    不均衡がトリガー長いパスで左の子ノードのサブツリーのルートに右からのものである場合、それは実行して周りに再び左回転、右回転、一度その例外周りのサブツリーを実行する必要があります。

    教科書の学習と問題解決プロセス

  • 質問1:ツリートラバーサル
  • 問題1ソリューション:

    1、プレオーダー - 左から右にトラバースサブツリーに、ルートにアクセスし、します

    2、行きがけ - トラバース左部分木、そして根を訪問し、それぞれの子の右側にある残りの木を横断する、左から

    左から右に横断するルートに各サブツリーは、アクセス - 3、後続のトラバーサル

    4、配列トラバーサル - 左から右へのツリー(ルート)の上部から下部パッキング、ツリー内の各ノードの各アクセス

  • 質問2:完全かつ完全なバイナリツリー、バイナリツリーの違い
  • 問題2ソリューション:

    完全なバイナリ - バイナリツリーの最下位レベルにある各ノードとリーフノードに対して約子葉の葉ノードに追加されます。

    完全二分木 - 高さh、第一の層を除く時間、他の層(1〜H-1)の二分木ノードの最大数、H層のリーフノードに達し、及びリーフノードであるように提供される場合左から右に配置されており、これは完全なバイナリツリーです。

    完全なバイナリツリーは、完全なバイナリツリーは必ずしも完全なバイナリツリーではない完全なバイナリツリーでなければなりません。

  • 質問3:どのように私は、バイナリ検索ツリーの要素を追加するには?
  • 質問3ソリューション:まず、要素は、バイナリツリーに配置されているかを理解する必要があります。私たちは、ルート要素を定義し、新しい要素を追加し、(例えば、第二の要素10にミックスにルート20を追加)の根に来ます。10 <20、我々は左の部分木のルートに設定されますので、左の部分木のルートが存在する唯一の要素10をルートとするので、我々は、左のルートノード10になるよう。第三の素子11であれば、その後、我々は最初の根に、20未満、我々は11を置くであろう、10と比較して、10よりも大きい場合、我々は、ノード10の右側にあります。(ノード10の左側にあるよりも小さい10より20小さい添加元素の場合)など。右のサブツリーは同じ理由です。全体的に、バイナリツリーはルート要素の配置基礎があり、右のサブツリープットのルートよりも大きく、根左サブツリーよりも小さい置きます。選択するためのサブツリーのいずれについても同じことであれば。

  • 質問4:なぜバランス二分探索木は非常に重要なのですか?
  • 質問4ソリューション:二分探索木がバランスされている場合はときほぼ半分の要素、各比較は除外されます。より不平衡ツリーは、近いそれをオフライン構成は、効率を低下させます。

プロセスでのコードのデバッグおよび問題解決

  • 質問1:
  • 問題1ソリューション:

  • 質問2:
  • 問題2ソリューション:

ホスティングコード

先週試験間違った質問の概要

先週、何の試験なので、何も間違った質問はありません。

コメントは、学生のブログやコードを持っていました

  • 今週の学習をペア
    • 20182317
    • 20182318
    • ペア学習コンテンツ
      • 四ツリートラバーサル
      • 前、中および後置式
      • バイナリーツリー上のいくつかの計算
      • バイナリ検索ツリー
  • 先週のブログピアアセスメントケース

その他(知覚、思考、など、別売)

今週の主要な研究ツリーと二分探索木。我々は、などトラバーサルの4種類の木の問題の3つの式いくつかの計算、二分探索木のバランス要因として、重要な多くの知識を学んだ多くのことを学びました。

学習の進捗バー

コードの行の数(追加/累算) ブログ量(追加/蓄積) 学習時間(追加/蓄積) 重要な成長
目標 10,000行 30 400時間
最初の週 56/56 2/2 20/20 メイン学んだ簡単な操作Linuxとどのように単純なJavaプログラムのコードを書いて、クラウドにアップロードします
二三週間 407分の331 3/5 43分の23 私はいくつかのクラスとパッケージを学んだが、また、いくつかの場所でJavaとC言語の違いを理解します
4週 595/1002 2/7 20/60 IDEAとIDEAgitコードクラウドを使用することを学んだが、また、TDDテストを学びました
5週目 1621/2623 2/9 77分の17 サーバーとユーザーのリンクコードを体験するだけでなく、継承されたいくつかの知識を学びます。
6週 1770/4393 1/10 99分の22 学習と多型とインタフェースの継承関係は、学習や例外処理の方法には例外があり、例外をカスタマイズ
7週 1747/6140 3/13 122分の23 、プログレッシブな学習の複雑さを計算し、各キューリストアレイと、スタックとキューを学習し、
8週目 384/6524 1/14 142分の20 我々はいくつかの検索やソートアルゴリズムを学んだだけでなく、計算ASLに学びました
週ナイン 1895/8419 3/17 164分の22 4つのツリートラバーサルを学び、どのように、既知の配列に基づいて、未知を見つけること、など
  • プランの学習時間:20時間

  • 実際の学習時間:22時間

  • 改良:なし

参考資料

おすすめ

転載: www.cnblogs.com/qianjiayu/p/11891482.html