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

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

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

  • 1、ツリートラバーサル:

その後、ルートへのアクセス、および左と右のサブツリーにアクセス:(1)先行順。

(2)容易にするために、第一の右サブツリーを訪問し、次いでルートを訪れ、左サブツリーを横切ります。

(3)順トラバーサル:最初、右サブツリーを横切る次いで、左サブツリーを容易にするために、そして最終的にルートノードをトラバース。

  • 2、木の実現:

(1)配列の実装:連続配列のデータ、配列の添字によって定義されたデータを配置すること、論理ツリーのパターン化配列上で乾燥させました。たとえば、次のルートノードは、インデックス位置N、左サブツリー(2N + 1)における位置、右の部分木(2 *(N + 1))における位置に格納されます。欠点は、スペースのわずかな無駄です。

(2)リストの実装:ノードのリンクリストの確立は、ノードは、ツリー構造で、左右の各ノードステートメント左サブツリー、接続する右サブツリーのノードを設定します。ノードを探しているときにもa.nextにa.nextを見つけるために使用することができます!= NULLサイクルを終了する条件として。

  • 3、
  • ディシジョン・ツリー:決定木構築方法が異なるコンストラクタを呼び出すことにより、カスタム・ノードを実装するクラスのコンストラクタにツリーを設定するだけでは、出力したい文字列、マルチセット、いくつかの工法に、非常に単純ですが、左側の子持っているサブツリーの確立については、右のツリーまたはサブツリーを確立します。しかし、アプリの建物の将来に大きな役割は、最も適した答えを見つけるために決定木を使用してバインドされています。
  • バイナリ検索ツリー:循環原理を持つ要素を見つけるために探している簡単な、注意を払うです:左のサブツリーを決定した後、右の機能を決定することで、バイナリツリーの共通の特徴があります。
  • バイナリツリーの削除:3例の削除

(1)リーフノードを削除:削除の親ノードに直接実測値は、親ノードのそれぞれ左右のサブツリーがヌルに等しいです。
子ノードで彼を交換してください。

代わりに、彼の直接の子ノード(2)サブノードのノードを含む(左または右)を削除。

(3)左右の二つのノードを含むノード削除:最初のツリートラバーサル順序、要素削除接合部の前方のポイントであると解釈し、そして、ツリー内のノードを見つけます。このノードを削除し、以前に見つかった値にノード値を削除します

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

  • 質問1:約2ノードとの接合部を削除します
  • 答え:
    最初のツリートラバーサル順序は、接合要素の削除の前に取られる、そして、ツリー内のノードを見つけること。このノードを削除し、以前に見つかった値にノード値を削除します

// Tは容易にそのようなT、E、Kの一般的な形のような任意の識別子を書き込むことができる場合、Vは、一般的に使用される一般的な他のパラメータを表し
ジェネリッククラスをインスタンス化するときは、Tの特定のタイプを指定しなければならない//
パブリッククラスジェネリックを {

タイプTの//キーメンバ変数、外部で指定されたT型

private T key;

public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定
    this.key = key;
}

public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定
    return key;
}

}
(カスタムクラスを含む)//のみジェネリック型パラメータクラスタイプ、単純タイプはできません
//引数を渡す必要が同じジェネリック型パラメータの型、すなわち整数です。

Generic<Integer> genericInteger = new Generic<Integer>(123456);

//渡される引数の型とジェネリック型パラメータは文字列である同じタイプであると。

Generic<String> genericString = new Generic<String>("key_vlaue");
Log.d("泛型测试","key is " + genericInteger.getKey());
Log.d("泛型测试","key is " + genericString.getKey());  
  • 问题2:((要素のinstanceof匹敵)!)
  • 問題解決策2:
    Javaのinstanceofのオペレータには、操作対象が特定のクラスのインスタンスであるかどうかを示すために使用されます。instanceofを留意されたオブジェクトが特定のクラスまたはそのサブクラスのインスタンスであるか否か、ブール値を返すことです。使用法:結果:ブール型のクラスのパラメータのinstanceof結果=オブジェクト。オブジェクト:必須。任意のオブジェクト表現。クラス:必須。任意のオブジェクトクラスが定義されました。注:オブジェクトは、クラスのインスタンスである場合、instanceof演算子がtrueを返します。オブジェクトは、指定されたクラスのインスタンスでないか、オブジェクトがnullの場合、falseが返されます

       interface A{}

    クラスB器具A {

    }
    クラスCは、{Bを拡張します

    }

    {instanceoftestクラス
    のpublic static無効メイン(文字列[] args){
    A、A = NULL;
    = NULL B B。
    ブールのres;

          System.out.println("instanceoftest test case 1: ------------------");
          res = a instanceof A;
          System.out.println("a instanceof A: " + res);
    
          res = b instanceof B;
          System.out.println("b instanceof B: " + res);
    
          System.out.println("/ninstanceoftest test case 2: ------------------");
          a=new B();
          b=new B();
    
          res = a instanceof A;
          System.out.println("a instanceof A: " + res);
    
          res = a instanceof B;
          System.out.println("a instanceof B: " + res);
    
          res = b instanceof A;
          System.out.println("b instanceof A: " + res);
    
          res = b instanceof B;
          System.out.println("b instanceof B: " + res);
    
          System.out.println("/ninstanceoftest test case 3: ------------------");
          B b2=(C)new C();
    
          res = b2 instanceof A;
          System.out.println("b2 instanceof A: " + res);
    
          res = b2 instanceof B;
          System.out.println("b2 instanceof B: " + res);
    
          res = b2 instanceof C;
          System.out.println("b2 instanceof C: " + res);
      }

    }

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

  • 一つの問題:変数が同等タイプどこ二つの物体の大きさを比較するために、多くの場合、クラスの頭を宣言する必要があり、「Tが同等の拡張」、そして最後に全体同等同等タイプやメソッドを継承し、一般的なTのコードがあります。
  • 問題への解決策:

    import java.util.*;
    class Demo<T extends List>{}
     public class Test

    {
    公共の静的な無効メイン(文字列[] args){
    デモ P = NULL; //は正しくコンパイル
    ArrayListにはそうすることによってリストのサブクラスであるため、//ここ
    //もし代わりデモ P = NULL;エラーは、このように上限を制限するであろう
    }
    }
    >親と同等GregorianCalendar GregorianCalendarは器具のためのカレンダー。

  • 質問2:どのように十分なスペースの問題を解決するために
  • 問題2解決策:あなたは直接のArrayList expandCapacityを参照することができます()
private void expandCapacity() {

        T[] larger = (T[]) (new Object[tree.length * 2]);

        for (int index = 0; index < tree.length; index++)

            larger[index] = tree[index];

        tree = larger;

    }

ホスティングコード

(実行結果はstatistics.shスクリプトをスクリーンショット)

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

  • 。IS Aを実現することが可能に一定量の時間を取ることを運用SUCH AウェイすべてのスタックとキューAを1.it
    .TRUE
    Bは.FALSE
    正解:A私の答え:B
    の分析:理想的。

  • デキュー呼び出されたときのキューAの円形アレイベース2.inの実装は、要素すべてがIS操作をシフトしなければならない。
    .TRUE
    .FALSE B
    正解:Bあなたの答え:A
    解像度:なし実装円形キューベースの配列をモバイル要素。

  • データスタックIS A ___________________ 3.A構造。
    A.LIFO
    B.FIFO
    c.LINKベース
    D.array基づき
    上記のE.none
    分析:LIFOスタックはデータ構造です。スタックの最後の要素の最初の要素になります。この手段は削除されます。

  • データキューであるA ____________________ 4.A構造。
    A.LIFO
    B.FIFO
    c.LINK基づい
    D.array基づいて
    上記のE.none
    分析:キューは、FIFO(先入れ先出し)のデータ構造である手段はキューにあります最初の要素はキューから削除され、最初の要素です。

    ペアピアレビューと

採点

  1. 適切に使用するマークダウン構文(1点):
    • 値下げに余分なポイントを使用しないでください
    • 構文エラーが(リンクは仕事は、形成しないしない、リストが正しくありません...)プラスではありません
    • 混乱を組版することはプラスではありません
  2. 要素の範囲(1点)テンプレート
    • ポイントなしで「教科書の学習と問題解決のプロセスを」行方不明
    • ポイントなし「のプロセスにコードを解決し、デバッグ問題」の欠如
    • マネージコードは、ポイントなしで開くことができません
    • 行方不明「双晶と相互評価」のポイントなしで開くことができません。
    • 「先週は間違ったタイトルの検査をまとめた」欠落してプラスすることはできません
    • 「プログレスバー」の欠如がプラスすることはできません
    • 「参照」の欠如はプラスすることはできません
  3. 教科書の学習と問題解決のプロセス、問題1ポイント

  4. プロセスでのコードのデバッグや問題解決、問題は1ポイント

  5. 週300以上の支店有効なコード(プラス2ポイント)
    • ポイントなしで1週間未満の20倍を提出
  6. その他のプラスのポイント:
    • 金曜日1ポイントの前に髪のブログ
    • 感情、経験は大きな空の1ポイントを残しません
    • 組版ファインプラス1ポイント
    • プログレスバーは、学習時間を記録し、1ポイントの状況を改善します
    • そこハンズオン新しいコードを書くことは、ある1ポイントを追加します
    • クラスの選択は、1ポイントを確認した後、
    • コードメッセージ仕様1ポイントをコミット
    • 深さの間違った質問を学ぶ、1ポイントを追加
    • コメントは真剣に、私は、問題やブログのコードに加えて1ポイントを指摘することができます
    • ペアは本物のプラス1ポイントを学びます
  7. ポイント:
    • 0に盗作バックル
    • バックルにするチートコード0
    • バックルに後期の割り当て0

コメントテンプレート:

  • フォートワース学習問題やブログ:
    • 学生は簡単に多くのことをブログに戻っての様々なスクリーンショットで発生したエラーを意識してきた、私はいつも一度だけノックバックするのを忘れ。
  • コードは、学習や問題価値があります:
    • すべての道はローマに通ず、多くの学生は本当に賞賛を説明し、それらを聞いた後、コードカーブ思考を思い付くことができます。
  • 11ポイント:スコアに基づいて、私はこのブログの得点を与えます。スコアは次の通りです:デバッグおよびソリューションは、2つの感情を処理+2コードを解決する教育学習過程で1適切な使用のMarkdown構文の問題や問題は、経験が中に詳細なレビューを学ぶために、大きな空+1 +1間違った質問を残さない.....真剣に、問題やブログ、コード1。ペア+1本格的な学習を指摘することができます。放課後のタイトル検証+1、+1記録プログレスバーがあります。

  • 参考例

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

  • 今週の学習をペア
  • 先週のブログピアアセスメントケース

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

  • 各レッスンの試験は、非常に多くの英語一方的、ジャワの問題だけではなく、私を作った知識から、教科書の異なるバージョンは、より多くのトラブルを発見するために、解決すべき多くの問題が、あります。
  • 学生の多くは良い牛、おいしい料理自体は、実行していない、グロテスクに自分のプログラムにコードを変更するように変更し、逆転されるコードの多様性を築く他の誰かを参照するために、4のヒープを実行する目的に精通今週5つの通常のJavaプログラムは、それから学ぶこと続けます。
  • 実験研究難しく、私は野菜に準備GGを取得しています。

学習の進捗バー

コードの行の数(追加/累算) ブログ量(追加/蓄積) 学習時間(追加/蓄積) 重要な成長
目標 5000行 30 400時間
最初の週 200/200 2/2 20/20
第二週 350/500 2/4 38分の24
第3週 512/1000 3/7 60分の22
4週 1158/1300 4/9 90分の35
5週目 2905/3000 6/5 24/24
6週 3927/4000 2/2 26/30
7週 9401/6000 3/4 30/50
8週目 9401/7000 1/1 30/30
週ナイン 12800/8000 3/3 30分の48

参考資料

おすすめ

転載: www.cnblogs.com/kv888777/p/11889868.html