資料結構——二叉樹的建立與遞迴遍歷
阿新 • • 發佈:2018-11-22
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Node{ //二叉樹的鏈式儲存結點 char data; struct Node *Lchild; struct Node *Rchild; }BiTNode,*BiTree; void CreateBiTree(BiTree *root){ //形參採用二級指標,實參為結點孩子域地址 char ch; ch=getchar(); if(ch=='#') *root=NULL; else{ *root=(BiTree)malloc(sizeof(BiTree)); (*root)->data=ch; CreateBiTree(&((*root)->Lchild)); CreateBiTree(&((*root)->Rchild)); } } void Visit(char data){ printf("%c",data); } void PreOrder(BiTree T){ //先序遞迴遍歷 if(T){ Visit(T->data); PreOrder(T->Lchild); PreOrder(T->Rchild); } } void InOrder(BiTree T){ //中序遞迴遍歷 if(T){ InOrder(T->Lchild); Visit(T->data); InOrder(T->Rchild); } } void PostOrder(BiTree T){ //後序遞迴遍歷 if(T){ PostOrder(T->Lchild); PostOrder(T->Rchild); Visit(T->data); } } int main(){ BiTree T; CreateBiTree(&T); PreOrder(T); printf("\n"); InOrder(T); printf("\n"); PostOrder(T); return 0; } ```