C++二叉树先序、中序、后序遍历
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 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。