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

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

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

今週の学習内容教科書第十六、7章、主に木や関連コンテンツ

  • ツリー。

    • ツリーは、より多くの、始めのデータ(ルート)によってフォーク、データストレージの発展と拡大のためのツリー構造のような、文字通りの意味です。
    • ルート:ツリーの最上位ノードに位置しています。
    • 親と子供:次の層のノードに接続されたノードは、このノードの子になります。このノードは、彼の両親の子と呼ばれています。
    • ブラザーズ:お互いの兄弟と呼ばれる同じ親ノード。
    • リーフ:子供のいないノード。
    • 深さ:木の層。
    • 順序:ノードの順序は、このノードの子の数であり、ツリーは、ツリー全体、順位最大ノードの順です。
  • バイナリツリー:各ノードは最大で2人の子供がいます。各ノードは2人の子供を持っている場合は、完全なバイナリツリーと呼ばれています。

  • ツリーの実装:

    • アレイの実装:アレイは、ツリーを使用して標識されたノードの左サブツリーの配列の添字を実現N 2Nに、右サブツリー+ 1 2N標識。
    • リストの実装:リストの周りに接続することができるツリー、バイナリノードリストを作成する最も一般的な方法では、三叉親ノードは、リンクされたリストを指すことがあります。より一般的に木を達成するための方法を使用しています。
  • ツリー横断:非再帰的トラバースよりも簡単な再帰的トラバーサルを、参照配列は他のトラバーサル順序を横断するように記述することができます。

予約限定トラバーサル:まず、ルートノード、その後、左のサブツリー、そして最後に右部分木

予約限定:最初の左の部分木、その後、ルートノード、および最終的には右のサブツリー

後順:最初の左の部分木、右部分木、最後のルート

コードによる非再帰的及び再帰的トラバーサル

  • バイナリツリーを検索:ルートノードの対象となり、その左側よりも小さい場合、その右側が等しい重要な点は、それよりも大きいです。見つけるために、左側の1の比較的小さな部分木でスクラッチ、1から探しているときに、ちょうど大きな権利サブツリーを探します。

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

  • 一つの問題:標準設定を区別するためにどのように、データの格納にツリーを使用する場合は、左または右のサブツリーサブツリーに新しいデータは、ストレージおよびその後の使用を見つけるために、より有益であろう。効率を改善する方法。
  • 問題の解決方法:例えば、一般店舗と検索に使用。ストレージルートを設定する場合、それは、標準としてルートと比較されます。彼は、左の部分木への再帰的な方法よりも小さく、彼の右部分木よりも扱いが比較的大きくて続行します。ストアが表示された後しかし、木が得られ、このアンバランスなツリー、データの特に片側には、バランスが崩れています。木の回転の必要性について。

  • 質問2:ツリーの使用で、どのようにトラバースメソッドを使用するには、それはより良い、より良い再帰的または非再帰的であるかどうか。
  • 質問2つのソリューション:再帰的な方法は、単純な、高効率、だけでなく、数行のコードの保存ですので、コード効率から、再帰的な方法は、確かに良いです。しかし、容易ではないと思いますしますが、また、厳格な条件に再帰ループの終了を設定する必要があります。それ以外の場合はエラーが発生しやすいです。

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

  • 一つの問題:左側のサブツリーはルートノードに接続することはできません。設定ではroot.left = temp;時間を、エラーなしでコンパイルが、実行時にヌルポインタ例外が存在します。根元にプリントの内容をヒント。この文章root.leftポイント温度の時に見つけステッピングは、通常のを指すことはできません。
  • 問題解決の方法:直接左と右の子ノードへのノードの定義は、アップ定義するときの方法を使用するには、変更定義メソッドをオーバーライドします。そして、最初に、考え方を変え、リンクを下から上に定義された一番下のノードを定義します。

ホスティングコード

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











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

            还是要提高效率啊,这样可不行。
这样下去,期末的其他科目可是难以保证。
还是要增加理解,提高效率。既是提高代码效率也是提高自己的效率。
加油吧,坚持下去,快放假了。
            

学習の進捗バー

コードの行の数(追加/累算) ブログ量(追加/蓄積) 学習時間(追加/蓄積) 重要な成長
目標 6000ライン 30 400時間
最初の週 200/200 2/2 17/17
二三週間 756分の556 3/5 48分の31 Javaプログラミングの考えを理解するためのクラスとメソッドの間の関係は、いくつかの進歩を遂げ理解
4週 673/1429 2/7 12/60 コードの2枚の間の関係は、いくつかを理解します
5週目 1308/2737 2/9 85分の25
6週 800/3537 2/11 103分の18
7週 4195/7732 2/13 130分の27
8週目 489/8221 1/14 136分の6
週ナイン 11114分の2893 3/17 166分の30
  • プランの学習時間:20時間

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

  • 改善点:マルチセクションの結果は、この時間は、それは当然のことながら説明するのは難しい......困難であり、他の科目にいくつかの時間を望んでいました。だから私は、Javaを学ぶために多くの時間を考え出す必要がありました。私は他の科目を学ぶので、私は枝をぶら下げたくない、自由な時間をもう少しすることができ、来週願っています!(ワバン)

おすすめ

転載: www.cnblogs.com/Java-cn/p/11848234.html