二叉树的建立与递归遍历C语言版

来源:互联网 发布:网络运营提成方案 编辑:程序博客网 时间:2024/05/16 06:08
</pre><pre name="code" class="cpp">#include <stdio.h>#include <malloc.h>typedef struct BTNode{char data;struct BTNode *lchild;struct BTNode *rchild;}BTNode;void createTree(BTNode* *T){char ch = getchar();if(ch=='#') {*T=NULL;return;}(*T) = (BTNode*)malloc(sizeof(BTNode));(*T)->data = ch;createTree(&(*T)->lchild);createTree(&(*T)->rchild);} void preOrder(BTNode *T)//先序遍历{if(T==NULL) return;printf("%c\t", T->data);if(T->lchild!=NULL)preOrder(T->lchild);if(T->rchild != NULL)preOrder(T->rchild);}void inOrder(BTNode *T)//中序遍历{if(T==NULL) return;if(T->lchild!=NULL)inOrder(T->lchild);printf("%c\t", T->data);if(T->rchild != NULL)inOrder(T->rchild);}void postOrder(BTNode *T)//后序遍历{if(T==NULL) return;if(T->lchild!=NULL)postOrder(T->lchild);if(T->rchild != NULL)postOrder(T->rchild);printf("%c\t", T->data);}int main(int argc, char const *argv[]){BTNode *T;createTree(&T);puts("PreOrder visit:");preOrder(T);putchar('\n');puts("inOrder visit:");inOrder(T);putchar('\n');puts("PostOrder visit:");postOrder(T);putchar('\n');return 0;}/*运行结果:ABD###C##PreOrder visit:A       B       D       CinOrder visit:D       B       A       CPostOrder visit:D       B       C       A请按任意键继续. . .*/


0 0