標籤:
1 #include <iostream> 2 using namespace std; 3 4 typedef struct BTNode 5 { 6 char data; 7 struct BTNode * lchild; 8 struct BTNode * rchild; 9 }BTNode;10 11 BTNode * initBTNode()12 {13 BTNode *node = (BTNode*)malloc(sizeof(BTNode));14 node->lchild=0;15 node->rchild=0;16 return node;17 }18 19 BTNode * init(BTNode *p)20 {21 BTNode *A=initBTNode();22 BTNode *B=initBTNode();23 BTNode *C=initBTNode();24 BTNode *D=initBTNode();25 BTNode *E=initBTNode();26 BTNode *F=initBTNode();27 28 A->data=‘A‘;29 B->data=‘B‘;30 C->data=‘C‘;31 D->data=‘D‘;32 E->data=‘E‘;33 F->data=‘F‘;34 35 C->lchild=E;36 C->rchild=F;37 B->lchild=D;38 A->rchild=C;39 A->lchild=B;40 41 p=A;42 return p;43 }44 45 void visit(BTNode *p)46 {47 cout << p->data << " ";48 }49 50 void preorder(BTNode *p)51 {52 if(p!=0)53 {54 visit(p);55 preorder(p->lchild);56 preorder(p->rchild);57 }58 }59 60 void inorder(BTNode *p)61 {62 if(p!=0)63 {64 inorder(p->lchild);65 visit(p);66 inorder(p->rchild);67 }68 }69 70 void postorder(BTNode *p)71 {72 if(p!=0)73 {74 postorder(p->lchild);75 postorder(p->rchild);76 visit(p);77 }78 }79 80 int main(int argc, char* argv[])81 {82 BTNode *node=new BTNode;83 BTNode *p=init(node);84 cout << "先序遍曆:" ;85 preorder(p);86 cout << endl;87 cout << "中序遍曆:" ;88 inorder(p);89 cout << endl;90 cout << "後序遍曆:" ;91 postorder(p);92 cout << endl;93 return 0;94 }
C++二叉樹先序、中序、後序遍曆