码迷,mamicode.com
首页 > 编程语言 > 详细

C++二叉树先序、中序、后序遍历

时间:2015-04-29 23:04:43      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

 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++二叉树先序、中序、后序遍历

标签:

原文地址:http://www.cnblogs.com/xxdfly/p/4467274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!