C語言 資料結構 二叉樹

2021-10-12 17:39:44 字數 2512 閱讀 5669

實驗報告內容:

一、實驗目的、要求:

(1)熟練掌握二叉樹的二叉鍊錶儲存結構的建立、二叉樹的三種遍歷演算法以及基於遍歷的幾種操作的實現。

(2)編寫適當的主函式和相關函式,使實驗題目執行出正確結果。

(3)當場程式設計、除錯、編譯。

(4)程式具有一定的健壯性、可讀性,盡量簡潔。

(5)程式執行完成後分別存檔,上交實驗報告,要求寫出實驗體會

二、實驗內容:

(1)實驗題目

(2)主要函式的演算法設計思想

(3)程式清單

(3)測試資料、實驗結果及結論

(4)實驗體會(實驗中存在的問題、進一步的想法等)

1、第一道題:

(1)實驗題目

程式設計實現二叉樹的建立、遍歷以及基於遍歷的幾種基本操作。

1)採用二叉鍊錶儲存結構建立乙個二叉樹;

2)用遞迴方法實現二叉樹的三種遍歷演算法;

3)求二叉樹中葉子結點的個數、度為1的結點個數和度為2的結點個數;

4)求二叉樹的深度。

(2)主要函式的設計思想

求二叉樹葉子結點數函式的設計思想

void

countleaf

(bitree t,

int&count)

}

求二叉樹深度函式的設計思想

int

depth

(bitree t)

}

(3)程式清單

#include

"iostream.h"

#include

"stdio.h"

#include

"stdlib.h"

#define ok 1

#define error 0

#define overflow -2

#define null 0

typedef

char telemtype;

typedef

int status;

typedef

struct bitnode bitnode,

*bitree;

//以下是建立二叉樹儲存結構

status createbitree

(bitree &t)

return ok;

}//creatbitree

// 先序遍歷二叉樹

void

preorder

(bitree t)

}// 中序遍歷二叉樹

void

inorder

(bitree t)

}// 後序遍歷二叉樹

void

postorder

(bitree t)

}//求二叉樹的葉子結點數

void

countleaf

(bitree t,

int&count)

}//求二叉樹中度為1的結點數

void

countbt1

(bitree t,

int&m)

}//求二叉樹度為2的結點數

void

countbt2

(bitree t,

int&n)

}//求二叉樹的深度

intdepth

(bitree t)

}// 求位於先序序列中第k個位置的結點的值

void

get_preseq

(bitree t,

int k,

int&c)

get_preseq

(t->lchild,k,c)

;//在左子樹中查詢

get_preseq

(t->rchild,k,c)

;//在右子樹中查詢}}

intmain()

break

;case3:

if(!t)printf

("\n未建立樹,請先建樹!\n");

else

break

;case4:

if(!t)printf

("\n未建立樹,請先建樹!\n");

else

break

;case5:

if(!t)printf

("\n未建立樹,請先建樹!\n");

else

break

;default

:printf

("請確認選擇項:\n");

}//end switch

}//end while

return0;

}

(4)測試資料、實驗結果及結論

C語言 資料結構 二叉樹

一 樹的概念及結構 1.樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,...

資料結構 二叉樹(c語言)

一下 是二叉樹的相關 包括二叉樹的根據前序遍歷建立二叉樹。根據前序遍歷 中序遍歷與後續遍歷依次查詢二叉樹的各個節點。include 定義二叉樹節點資料型別 typedef struct bitnode bitnode,bitree bitree為指向bitnode這種結構的指標 前序構造二叉樹函式 ...

資料結構之二叉樹 C語言

二叉樹是一種依託指標建立的資料結構。二叉樹結構體中包含資料域和兩個指標,乙個指向左樹,乙個指向右樹。開始的第乙個結點稱為二叉樹的根節點,需要建立乙個指向根節點的指標,這樣才能訪問整棵二叉樹。我所知的有兩種建立方式。第一種是設個函式的返回型別為二叉樹結點結構體。例如 typedef struct tr...