資料結構 二叉樹的遍歷

2021-09-25 02:19:04 字數 1715 閱讀 3450

一、實驗教學的內容或要求

1.編寫函式,輸入字串行,建立二叉樹的二叉鍊錶

2.編寫函式,實現二叉樹的中序遞迴遍歷演算法。

3.編寫函式,實現二叉樹的中序非遞迴遍歷演算法

4.編寫函式,借助佇列實現二叉樹的層次遍歷演算法

5.編寫函式,求二叉樹的高度

6.編寫函式,求二叉樹的結點個數

7.編寫函式,求二叉樹的葉子個數

8.編寫函式,交換二叉樹每個結點的左子樹和右子樹

9.編寫乙個主函式,在主函式中設計乙個簡單的選單,分別除錯上述演算法

程式**

#define _crt_secure_no_warnings  

#include #include #include #define max 100

//二叉鍊錶儲存結構

typedef char datatype;

typedef struct node

bitree;

//棧中的資料型別

typedef bitree*e;

typedef struct

seqstack;

//棧的型別定義,順序棧

typedef struct

s;//初始化棧

seqstack*initseqstack()

//入棧

int push(seqstack*e,e x)

e->top++;

e->data[e->top] = x;

return 1;

}//出棧

void pop(seqstack*e)

int empty(seqstack*e)

else return 0;

}e top(seqstack*e)

//1.編寫函式, 輸入字串行, 建立二叉樹的二叉鍊錶

bitree *createbitree()

}//2.編寫函式, 實現二叉樹的中序遞迴遍歷演算法。

void inorder(bitree *root)

}//3.編寫函式, 實現二叉樹的中序非遞迴遍歷演算法

void inorderun(bitree*e)

if (empty(s))

break;

e = top(s);

pop(s);

printf("%c ",e->data);

e = e->rchild; }}

//4.編寫函式, 借助佇列實現二叉樹的層次遍歷演算法

void levelorder(bitree*e)

while (p->front != p->rear)

if (e->rchild != null)

}}//5.編寫函式, 求二叉樹的高度

int high(bitree*e)

//6.編寫函式, 求二叉樹的結點個數

int node(bitree *e)

}//7.編寫函式, 求二叉樹的葉子個數

int leaf(bitree*e)

}//8.編寫函式, 交換二叉樹每個結點的左子樹和右子樹

void exchange(bitree*e)

if (e->lchild) exchange(e->lchild);

if (e->rchild) exchange(e->rchild);

}void menu()

int main()

}}

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...

資料結構 遍歷二叉樹

二叉樹的遍歷原理 二叉樹的遍歷是指從根節點出發,按照某種次序以此訪問二叉樹所有節點,使得每個節點被訪問一次且僅被訪問一次 二叉樹遍歷方法 1.前序遍歷 規則是若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹 2.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...