-
Notifications
You must be signed in to change notification settings - Fork 46
/
boundaryTraversal.cpp
42 lines (36 loc) · 954 Bytes
/
boundaryTraversal.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
#include <iostream>
#include <queue>
#include <vector>
#include "basicTreeTemplate.h"
using namespace std;
vector<int> *vc = new vector<int>[30];
static int level, maxm = INT_MIN;
void boundaryTrav(BNode *root) {
if (!root)
return;
vc[level].push_back(root->data);
level++;
if (level > maxm)
maxm = level;
boundaryTrav(root->left);
boundaryTrav(root->right);
level--;
}
int main() {
BNode *root = createNode(20);
root->left = createNode(8);
root->left->left = createNode(4);
root->left->right = createNode(12);
root->left->right->left = createNode(10);
root->left->right->right = createNode(14);
root->right = createNode(22);
root->right->right = createNode(25);
boundaryTrav(root);
for (int t = 0; t < maxm; t++) {
cout << vc[t].front() << " ";
}
for (int t = maxm - 1; t >= 1; t--) {
cout << vc[t].back() << " ";
}
cout << endl;
}