【資料結構】二叉樹的建立與遍歷(遞迴)
阿新 • • 發佈:2018-11-08
該程式全是使用遞迴的操作
執行環境是:Dev-C++
#include <stdio.h> #include <stdlib.h> typedef struct node{ char data; struct node *lchild,*rchild; }bintnode; typedef bintnode *bintree; typedef struct stack{ bintree data[100]; int tag[100]; int top; }seqstack; void push(seqstack *s,bintree t) { s->data[s->top]=t; s->top++; } bintree pop(seqstack *s) { if(s->top!=0) { s->top--; return (s->data[s->top]); } else { return NULL; } } bintree node; bintree createbintree() { char ch; bintree t; if((ch=getchar())=='#') { t=NULL; } else { t=(bintnode *)malloc(sizeof(bintnode)); t->data=ch; t->lchild=createbintree(); t->rchild=createbintree(); } return t; } //遞迴的前序遍歷,中序遍歷,後序遍歷 void preorder(bintree t) { if(t) { printf("%c ",t->data); preorder(t->lchild); preorder(t->rchild); } } void inorder(bintree t) { if(t) { inorder(t->lchild); printf("%c ",t->data); inorder(t->rchild); } } void postorder(bintree t) { if(t) { postorder(t->lchild); postorder(t->rchild); printf("%c ",t->data); } } int main () { node = createbintree(); postorder(node); return 0; }