-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbtree.cpp
82 lines (61 loc) · 1.25 KB
/
btree.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <string>
using namespace std;
typedef char datatype;
struct node{
datatype data;
int llink, rlink;
};
void preorder ( node* tree, int p);
void inorder ( node* tree, int p);
void postorder( node* tree, int p);
int main() {
const int n = 6;
node tree[n+1];
int root = 1;
tree[1].data = 'a';
tree[2].data = 'b';
tree[3].data = 'c';
tree[4].data = 'd';
tree[5].data = 'e';
tree[6].data = 'f';
tree[1].llink = 2;
tree[1].rlink = 3;
tree[2].llink = 0;
tree[2].rlink = 4;
tree[3].llink = 5;
tree[3].rlink = 6;
tree[4].llink = 0;
tree[4].rlink = 0;
tree[5].llink = 0;
tree[5].rlink = 0;
tree[6].llink = 0;
tree[6].rlink = 0;
preorder(tree, root);
cout << endl;
inorder(tree, root);
cout << endl;
postorder(tree, root);
cout << endl;
}
void preorder( node* tree, int p) {
if ( p > 0 ) {
cout << tree[p].data << " ";
preorder(tree, tree[p].llink);
preorder(tree, tree[p].rlink);
}
}
void inorder( node* tree, int p) {
if ( p > 0 ) {
inorder(tree, tree[p].llink);
cout << tree[p].data << " ";
inorder(tree, tree[p].rlink);
}
}
void postorder( node* tree, int p) {
if ( p > 0 ) {
postorder(tree, tree[p].llink);
postorder(tree, tree[p].rlink);
cout << tree[p].data << " ";
}
}