第六次作業 二叉樹

2022-07-12 03:18:08 字數 2613 閱讀 1839

這個作業屬於哪個課程

這個作業要求在**

/homework/11430

這個作業的目標

掌握二叉樹的遞迴和非遞迴遍歷演算法

學號2018204165

一、實驗目的

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

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

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

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

二、實驗預習

說明以下概念

1、二叉樹:

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

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

2、遞迴遍歷:

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

3、 非遞迴遍歷:

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

4、層序遍歷:

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

三、實驗內容和要求

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

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

">#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 preorder_num(bitree p)

return j;

}int main()

int num1=0 ,num2=0;

if(p==null)

return 0;

else if(p->lchild==null&&p->rchild==null)

return 1;

else

} int main()

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

int lchilddep,rchilddep;

if(p==null)

return 0;

else

}int main()

四、實驗小結

通過求二叉樹的深度、葉子結點數和層序遍歷等演算法,理解了二叉樹的基本特性,具體**實現仍需加強。

第六次作業 二叉樹

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

第六次作業 二叉樹

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

第六次作業 二叉樹

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