第六次作業 二叉樹

2022-07-09 19:48:13 字數 2596 閱讀 3225

| 這個作業屬於哪個課程 | |

| ---- | ---- | ---- |

| 這個作業要求在** | /homework/11430 |

| 這個作業的目標 | 掌握二叉樹的基本特性,掌握二叉樹的先序、中序、後序的遞迴遍歷演算法,理解二叉樹的先序、中序、後序的非遞迴遍歷演算法,通過求二叉樹的深度、葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性 |

| 學號 | 2018204195 |

一、實驗目的

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

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

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

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

二、實驗預習

說明以下概念:

1、二叉樹:

二叉樹(binary tree)是樹形結構的乙個重要型別。許多實際問題抽象出來的資料結構往往是二叉樹形式,即使是一般的樹也能簡單地轉換為二叉樹,而且二叉樹的儲存結構及其演算法都較為簡單,因此二叉樹顯得特別重要。二叉樹特點是每個結點最多只能有兩棵子樹,且有左右之分,二叉樹作為樹形結構的一種,是每個節點最多有兩個子樹的樹結構。

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

2、遞迴遍歷:

由於二叉樹所具有的遞迴性質,一棵非空的二叉樹可以看作是由根節點、左子樹和右子樹3部分構成,因為若能依次遍歷這3部分的資訊,也就遍歷了整個二叉樹。沿著某條搜尋路線,依次對樹(或圖)中每個節點均做一次訪問,遞迴作為遍歷的一種方法,是利用計算機的堆疊的概念,一般通過呼叫相同的函式來實現,函式中一般會設定終止的語句。

3、 非遞迴遍歷:

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

4、層序遍歷:

層序遍歷:進行層序遍歷時,對某一層的節點訪問完後,再按照他們的訪問次序對各個節點的左孩子和右孩子順序訪問,這樣一層一層進行,先訪問的節點其左右孩子也要先訪問,這正好符合佇列的操作特性。

三、實驗內容和要求

#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()

執行結果:

二叉樹形態:

int j=0;

bitree stack[max],q;

int top=0,i;

for(i=0; irchild!=null) stack[top++]=q->rchild;

if(q->lchild!=null) q=q->lchild;

else

if(top>0) q=stack[--top];

else q=null;

} return j;

}

執行結果:

int leafnodes(bitree p) 

}

執行結果:

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

演算法**:

int btnodedepth(bitree p) 

}

執行結果:

四、實驗小結

掌握了二叉樹的基本特性,學習了二叉樹的先序、中序、後序的釘釘遞迴遍歷演算法,通過求二叉樹的深度、葉子結點數和層序遍歷等演算法,理解了二叉樹的基本特性,對c語言的學習更進一步。

第六次作業 二叉樹

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

第六次作業 二叉樹

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

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 homework 11392 這個作業的目標 二叉樹的特點,二叉樹的歷遍演算法 深度演算法 學號2018204261 1 掌握二叉樹的基本特性 2 掌握二叉樹的先序 中序 後序的遞迴遍歷演算法 3 理解二叉樹的先序 中序 後序的非遞迴遍歷演算法 4 通過求二叉樹...