20182314 2019-2020-1 《數據結構與面向對象程序設計》第9周學習總結

20182314《程序設計與設計結構》 第七週學習總結

教材學習內容總結

第十六章:html

樹:java

(1)樹(tree)是包含n(n>=0)個結點的有窮集git

(2)空集合也是樹,稱爲空樹。空樹中沒有結點。數據結構

(3)結點的度:一個結點含有的子結點的個數稱爲該結點的度;ide

(4)葉結點或終端結點:度爲0的結點稱爲葉結點;學習

(5)非終端結點或分支結點:度不爲0的結點;設計

(6)雙親結點或父結點:若一個結點含有子結點,則這個結點稱爲其子結點的父結點;指針

(7)孩子結點或子結點:一個結點含有的子樹的根結點稱爲該結點的子結點;調試

(8)兄弟結點:具備相同父結點的結點互稱爲兄弟結點;code

(9)樹的度:一棵樹中,最大的結點的度稱爲樹的度;

(10)結點的層次:從根開始定義起,根爲第1層,根的子結點爲第2層,以此類推;

(11)樹的高度或深度:樹中結點的最大層次;

(12)堂兄弟結點:雙親在同一層的結點互爲堂兄弟;

(13)結點的祖先:從根到該結點所經分支上的全部結點;

(14)子孫:以某結點爲根的子樹中任一結點都稱爲該結點的子孫。

(15)森林:由m(m>=0)棵互不相交的樹的集合稱爲森林;

2.前序遍歷:從根結點開始,訪問每個結點及其孩子。(A->B->D->E->C)

3.中序遍歷:從根結點開始,訪問結點的左側孩子,而後是該結點,再而後是任何剩餘的結點。(D->B->E->A->C)

4.後序遍歷:從根結點開始,訪問結點的孩子,而後是該結點。(D->E->B->C->A)

5.層序遍歷:從根節點開始,訪問每一層的全部結點,一次一層。(A->B->C->D->E)

第十七章:

二叉查找樹:一棵空樹,或者是具備下列性質的二叉樹

(1)若左子樹不空,則左子樹上全部結點的值均小於它的根結點的值;

(2)若右子樹不空,則右子樹上全部結點的值均大於它的根結點的值;

(3)左、右子樹也分別爲二叉排序樹;

(4)沒有鍵值相等的結點。

平衡二叉查找樹:平衡二叉搜索樹是一種結構平衡的二叉搜索樹,即葉節點高度差的絕對值不超過1,而且左右兩個子樹都是一棵平衡二叉樹。

左旋和右旋:將根結點的左結點或右結點成爲新的根結點,而後使原樹根的左結點的右結點成爲原樹根的新的右結點;

教材學習中的問題和解決過程

  • 問題1:刪除根出現空指針異常。

  • 問題1解決方案:
    深度定義是從上往下的,高度定義是從下往上的。
    樹從根結點開始往下數,葉子結點所在的最大層數稱爲 樹的深度。

代碼調試中的問題和解決過程

  • 問題1:
    在學習教材的時候,最小生成樹的方法中有這樣一行代碼「resultGraph[][] = Double.Positive_INFINITY」,不是很理解這裏的POSITIVE_INFINITY表明什麼意思。

  • 問題1解決方案: 首先來思考這樣一個問題,在進行浮點數運算的時候,有時咱們會遇到除數爲0的狀況,那咱們該如何解決呢?因此引入了無限這個概念,POSITIVE_INFINITY正是能夠用來表明無限。示例以下

double i = Double.POSITIVE_INFINITY;   // i表示爲無限大

public static final double POSITIVE_INFINITY = 1.0 / 0.0;
  • 問題2:廣度優先遍歷和深度優先遍歷的實現過程及其原理
  • 問題2解決方案:
    深度優先搜索的步驟爲:

(1)、首先節點 1 進棧,節點1在棧頂;

(2)、而後節點1出棧,訪問節點1,節點1的孩子節點3進棧,節點2進棧;

(3)、節點2在棧頂,而後節點2出棧,訪問節點2

(4)、節點2的孩子節點5進棧,節點4進棧

(5)、節點4在棧頂,節點4出棧,訪問節點4,

(6)、節點4左右孩子爲空,而後節點5在棧頂,節點5出棧,訪問節點5;

(7)、節點5左右孩子爲空,而後節點3在站頂,節點3出棧,訪問節點3;

(8)、節點3的孩子節點7進棧,節點6進棧

(9)、節點6在棧頂,節點6出棧,訪問節點6;

(10)、節點6的孩子爲空,這個時候節點7在棧頂,節點7出棧,訪問節點7

(11)、節點7的左右孩子爲空,此時棧爲空,遍歷結束。

代碼託管



等等。

上週考試錯題總結

本週無錯題

結對及互評

點評:

  • 代碼練習較多,問題較爲深邃(至少我看不懂)

  • 基於評分標準我給本博客打分:16分。得分狀況以下:

1.正確使用Markdown語法(加1分)

2.模板中的要素齊全(加1分)

3.教材學習中的問題和解決過程(加3分)

4.代碼調試中的問題和解決過程(加4分)

5.其餘加分(加7分)

6.進度條中記錄學習時間與改進狀況(1)

7.感想,體會不假大空(1)

8.有動手寫新代碼(1)

9.排版精美(1)

10.錯題學習深刻(1)

11.點評認真,能指出博客和代碼中的問題(1)

12.結對學習狀況真實可信(1)

其餘(感悟、思考等,可選)

最近java水平感受有所提高,但仍是不太想寫書上的代碼。一開始都沒找到敲代碼的位置,確實有點心態爆炸,但願能在跟上的同時儘可能往前面攆一攆。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 10000行 30篇 400小時
第7周 2000/6373 2/2 20/20

參考資料

相關文章
相關標籤/搜索