C語言資料結構的簡單實驗——二叉樹的遍歷
阿新 • • 發佈:2018-12-19
實驗題目:
建立一株用二叉連結串列儲存的二叉樹,並對其進行遍歷。
實驗思路:
解題關鍵是要建立二叉樹,因此對語二叉樹的每一個節點,我以連結串列為儲存方式並用遞迴的思想對其進行定義。
**
程式碼實現:
**
#include<stdio.h> #include<stdlib.h> typedef struct node { char data; struct node* Lchild; struct node* Rchild; }bitnode; bitnode* CreatBiNode(); //建立一顆二叉樹 void PreOrder(bitnode* node); //先序遍歷 void InOrder(bitnode* node); //中序遍歷 void PostOrder(bitnode* node); //後序遍歷 int main() { printf("----------------------二叉樹的遍歷--------------------------:\n"); bitnode* root = CreatBiNode(); printf("先序遍歷:\n"); PreOrder(root); printf("\n中序遍歷:\n"); InOrder(root); printf("\n後序遍歷:\n"); PostOrder(root); return 0; } bitnode *CreatBiNode() { bitnode* p; char ch; scanf("%c",&ch); if(ch == ' ') { p = NULL; } else { p = (bitnode*)malloc(sizeof(bitnode)); p->data = ch; p->Lchild = CreatBiNode(); p->Rchild = CreatBiNode(); } return p; } void PreOrder(bitnode *node) { if( node ) { printf("%c",node->data ); PreOrder(node->Lchild); PreOrder(node->Rchild); } } void InOrder(bitnode *node) { if(node) { InOrder(node->Lchild); printf("%c",node->data); InOrder(node->Rchild); } } void PostOrder(bitnode *node) { if(node) { PostOrder(node->Lchild); PostOrder(node->Rchild); printf("%c",node->data); } }
**
實驗結果:
**