第六次作業 二叉樹

2022-07-09 19:54:15 字數 2724 閱讀 3142

這個作業屬於哪個課程

這個作業要求在**

這個作業的目標

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

學號2018204254

一、實驗目的

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

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

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

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

二、實驗預習

說明以下概念

1、二叉樹:

二叉樹是樹形結構的乙個重要型別。二叉樹是n個結點的有限集,它或者是空集(n=0),或者由乙個根結點及兩棵互不相交的、分別稱作這個根的左子樹和右子樹的二叉樹組成。

2、遞迴遍歷:

二叉樹的定義是遞迴的,一棵非空的二叉樹是由根結點、左子樹、右子樹這三個基本部分組成的,因此,遍歷一棵非空二叉樹的問題可分解為三個子問題:訪問根節點;遍歷左子樹;遍歷右子樹。

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

執行程式輸入:abc##de#g##f###

執行結果:

二叉樹形態:

">#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 ...

第六次作業 二叉樹

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