第六次作業 二叉樹

2022-08-23 23:54:14 字數 2627 閱讀 7950

這個作業屬於哪個課程

這個作業要求在**

/homework/11430

這個作業的目標

《掌握二叉樹的基本特性;掌握二叉樹的先序、中序、後序的遞迴遍歷演算法;理解二叉樹的先序、中序、後序的非遞迴遍歷演算法;通過求二叉樹的深度、葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性》

學號2017205212

一、實驗目的

1、掌握二叉樹的基本特性

2、掌握二叉樹的先序、中序、後序的遞迴遍歷演算法

3、理解二叉樹的先序、中序、後序的非遞迴遍歷演算法

4、通過求二叉樹的深度、葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性

二、實驗預習

說明以下概念

1、二叉樹:二叉樹是n個有限元素的集合,該集合或者為空、或者由乙個稱為根的元素及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成,是有序樹。當集合為空時,稱該二叉樹為空二叉樹。在二叉樹中,乙個元素也稱作乙個結點 。

2、遞迴遍歷:由於二叉樹所具有的遞迴性質,一棵非空的二叉樹可以看作是由根節點、左子樹和右子樹3部分構成,因為若能依次遍歷這3部分的資訊,也就遍歷了整個二叉樹。按照左子樹的遍歷在右子樹的遍歷之前進行的約定,根訪問根節點位置的不同,可以得到二叉的前序、中序、後序3種遍歷方法。

3、非遞迴遍歷:不採用遞迴的方式對二叉樹進行遍歷,要採用棧去模擬實現。

4、層序遍歷:設二叉樹的根節點所在層數為1,層序遍歷就是從所在二叉樹的根節點出發,首先訪問第一層的樹根節點,然後從左到右訪問第2層上的節點,接著是第三層的節點,以此類推,自上而下,自左至右逐層訪問樹的結點的過程就是層序遍歷。

三、實驗內容和要求

1、閱讀並執行下面程式,根據輸入寫出執行結果,並畫出二叉樹的形態。

#include#include#include#include#define max 20

typedef struct btnode*bitree;

void createbitree(bitree *t)

q=(bitree)malloc(sizeof(struct btnode));

if(q==null)

q->data=s;

*t=q;

createbitree(&q->lchild); /*遞迴建立左子樹*/

createbitree(&q->rchild); /*遞迴建立右子樹*/

}void preorder(bitree p)

}void inorder(bitree p)

}void postorder(bitree p)

}void preorder_n(bitree p)

}void release(bitree t)

}int main()

輸入:abc##de#g##f###

執行結果:

二叉樹形態:

}執行結果:

int leafnodes(bitree p)

}

執行結果:4、在上題中補充求二叉樹深度演算法,並在主函式中補充相應的呼叫驗證正確性。

演算法**:

int btnodedepth(bitree p)

}

執行結果:

void levelorder(bitree t)

}

6、補充二叉樹中序、後序非遞迴演算法。

中序:

void nrpreorder(bitree t)   //非遞迴先序遍歷二叉樹

else //棧滿時

p=p->lchild; //深入當前根結點的左子樹

}if(top<=0)return;

else

}

後序:

void nrpostorder(bitree t)

else

else}}

}

四、實驗小結了解了二叉樹的基本特性,對先、中、後序的遞迴及非遞迴遍歷演算法有了基礎的了解,具體**還需加深學習。

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 homework 11430 這個作業的目標 理解建樹過程 學號2018204299 一 實驗目的 1 掌握二叉樹的基本特性 2 掌握二叉樹的先序 中序 後序的遞迴遍歷演算法 3 理解二叉樹的先序 中序 後序的非遞迴遍歷演算法 4 通過求二叉樹的深度 葉子結點數...

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 homework 11430 這個作業的目標 掌握二叉樹的基本特性,掌握二叉樹的先序 中序 後序的遞迴遍歷演算法,理解二叉樹的先序 中序 後序的非遞迴遍歷演算法,通過求二叉樹的深度 葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性 學號 2018204195 ...

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 這個作業的目標 掌握二叉樹的基本特性 二叉樹的先序 中序 後序的遞迴遍歷演算法 理解二叉樹的先序 中序 後序的非遞迴遍歷演算法。通過求二叉樹的深度 葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性 學號2018204254 一 實驗目的 1 掌握二叉樹的基本特...