DS博客做業05--樹

#1.本週學習總結 ##1.思惟導圖 ##2.談談你對樹結構的認識及學習體會算法

相對於以前的棧和隊列,樹的學習難度明顯. 相較於以前的線性結構, 樹更多的須要應用遞歸思惟. 循環結構用多了以後, 對於轉變到遞歸難以適應, 考慮問題的方式也改變了
樹表示數據表素之間一對多的關係,能夠分爲二叉樹(徹底二叉樹、滿二叉樹、平衡二叉樹、排序二叉樹),紅黑樹,哈夫曼樹等等,遍歷的順序也有不少種:中序遍歷,
先序遍歷、後序遍歷、層次遍歷等等(每一種咱們都要掌握),分類較多,應用的範圍也很廣.

#2.PTA實驗做業 ##2.1題目一:6-2 中序輸出度爲1的結點 ###2.1.1設計思路(僞代碼)函數

由題目中序輸出可知,先左子樹,再根,在右子樹
If T!=NULL //樹不爲空
遞歸遍歷左子樹
If 右子樹==NULL 且左子樹!=NULL 或者 左子樹==NULL且右子樹!=NULL
輸出

###2.1.2代碼截圖 ###2.1.3提交列表及說明 if的判斷條件出錯學習

##2.2題目二:7-1 還原二叉樹 ###2.2.1 設計思路設計

int Height(int num1,int num2,int lenth,int H)
if lenth == 0 
    返回 H-1;
    int len = 0;
    while(1)
	{
        if  Str2[num2+len] == Str1[num1]
		break;
       
           len++;      
    }
     應用遞歸算法
    int h1 = Height(num1+1,num2,len,H+1);   返回左子樹最大高度 
    int h2 = Height(num1+len+1,num2+len+1,lenth-1-len,H+1);  返回右子樹最大高度
 
    返回高度

###2.2.2代碼截圖 ###2.2.3本題PTA提交列表說明 3d

##2.3 題目3:7-2 根據後序和中序遍歷輸出先序遍歷 (25 分) ###2.3.1 代碼思路code

void preorder(int a[], int b[], int n)
if n不爲0
    後序遍歷的最後一個元素爲根
    for i=0 to n
        if b[i]=根 then m=i爲根在中序遍歷中的位置
    輸出元素
    遞歸調用本函數

###2.3.2 代碼截圖 ###2.3.3 提交列表 #3.閱讀代碼 ##3.1 題目 計算一棵樹的寬度(並輸出每一層的寬度) ##3.2 解題思路blog

做者解題思路:
先建立一個隊列,用一個標註變量去標註最開始時隊尾的位置,而後用一個循環來操做二叉樹,循環體內的操做和層序遍歷相似,不一樣的是,在每趟循環結束後都要來判斷上一層是否便利完成(用那個標註變量和隊首的位置比較)若是便利完成,則刷新最大寬度。

##3.3 代碼截圖 排序

##3.4 學習體會 經過此題,加成了對於層次遍歷的作法,相對於前中後序遍從來說,層次遍歷須要用隊列輔助實現,對於代碼的操做多了許多遞歸

相關文章
相關標籤/搜索