DS博客做業05--樹

1.本章學習總結

1.1思惟導圖

1.2.談談你對樹結構的認識及學習體會:

樹就是非線性數據結構,相對於以前所學的全部知識來講,樹與二叉樹的難度要高於以前所學的知識。孩子樹,雙親樹,孩子兄弟樹,二叉樹,這些都是重點。
關於樹的學習,樹的基本術語,樹的性質,這些都是咱們須要去記得東西。尤爲是學習樹,還要懂得如何去畫樹,畫圖軟件也是咱們須要學習的。

2.PTA實驗做業

2.1.題目1:題目名稱(編程題)

6-4 jmu-ds-表達式樹 (25 分)

2.1.1 設計思路

建棧 初始化:stacktree棧
while(表達式未結束)
      if(ch==操做數)
           生成一個只有根結點的子樹T   
      if(ch==運算符)
                 while(ch<op棧頂運算符)  棧頂優先級高,則
                         建立一個樹結點T,數據爲op.top()
                         stacktree彈出2個根結點T1,T2
                         T->lchild=T1,T->rchild=T2
                         stacktree.push(T)
                         if(ch>op頂運算符) op.push(ch)
                         if(ch==op頂運算符)  則op.pop()
if(T不爲空)
     then
         if(左右子樹不爲空)
               then 返回對應數值
         遞歸左右子樹獲得a,b
         switch(結點值)
               對應符號計算 返回值 
                      if(除數爲0)
                           then 輸出錯誤
                           else  a/b

2.1.2代碼截圖

2.2.3本題PTA提交列表說明

Q1:在寫由於switch部分忽略了break致使部分正確

2.2.題目1:題目名稱

7-4 jmu-ds-二叉樹葉子結點帶權路徑長度和 (25 分)

2.2.1 設計思路

首先定義結構體用於儲存二叉樹 
BinTree CreateBTree(string str, int i, int h);  
定義函數 wpl(BinTree T);     求和、 

BinTree CreateBTree(string str, int i, int h)
{
    if i < 0 且 i >= length   do 
       返回 NULL;
    end if 
    if str[i] == '#'
       返回 NULL;
    end if 
    定義結構體變量 t,並賦予空間;
        用來儲存二叉樹 
    返回 t;
}
int wpl(BinTree T)
{
    if     BT == NULL 
        返回 0;
    end if 
    if BT->left == NULL 且 BT->right == NULL
        返回 ((BT->data - '0')*BT->high);
    end if 
    返回 (wpl(BT->left) + wpl(BT->right));
}

2.2.2代碼截圖

2.2.3本題PTA提交列表說明

Q1:在樹的創建上出現了錯誤

2.3.題目1:題目名稱

7-1 還原二叉樹

2.3.1設計思路(僞代碼)

main
    定義n ch a[MaxSize],b[MaxSize] ,T
    T=ReturnTree(a,b,N);
    輸出 GetHight(T)
BTree ReturnTree
    if(length==0)   return NULL
    創建T的節點空間
    T->data=*b
    for(i=0;i!=length;i++)
    T->lchild=ReturnTree(a,b+1,i);
    T->rchild=ReturnTree(a+i+1,b+i+1,length-i-1);
     返回T
int GetHight
    定義l, r;
    if(BT==NULL)
        返回0
    l=GetHight(BT->lchild);
    r=GetHight(BT->rchild);
    返回結果 (l>r?l+1:r+1)

2.3.2代碼截圖


2.3.3本題PTA提交列表說明

Q1:建樹的遞歸有一些問題,最開始直接運用T->lchild=CreatTree( s, 2 * i)這個,可是建的不對,最後借鑑了一下別人的方法,改正了一下

3.棧和隊列上機考試錯題及解決辦法(-3--3分)

3.1.錯題1

樹上機考試--網絡18 7-2 jmu-ds-輸出二叉樹每層節點

3.2.錯誤代碼實例:

錯誤代碼



編程

3.3.分析錯誤緣由及體會

二叉樹爲空的狀況漏考慮了,要考慮這個只要在剛開始入隊狀況下加上判斷隊列爲空的條件便可解決;關於樹的學習上,從遍歷最基礎的開始,樹的不少操做都要用到遞歸,而遞歸是一件讓人很頭疼的事,在遇到遞歸函數時,常常會出現混亂,
相關文章
相關標籤/搜索