Skip to content

Commit 913beeb

Browse files
authored
Create main.cpp
1 parent dd80961 commit 913beeb

File tree

1 file changed

+52
-0
lines changed
  • 17 - Binary Tree Data Structure Problems/15 - Tree Boundary Traversal

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class Solution {
2+
public:
3+
void traverseLeft(Node* root, vector<int> &ans){
4+
if(root == NULL || (root -> left == NULL && root -> right == NULL)) return;
5+
6+
ans.push_back(root -> data);
7+
8+
if(root -> left) traverseLeft(root -> left, ans);
9+
else traverseLeft(root -> right, ans);
10+
}
11+
12+
void traverseLeaf(Node* root, vector<int> &ans){
13+
if(root == NULL) return;
14+
15+
if (root->left == NULL && root->right == NULL) {
16+
ans.push_back(root->data);
17+
return;
18+
}
19+
20+
traverseLeaf(root -> left, ans);
21+
traverseLeaf(root -> right, ans);
22+
23+
}
24+
25+
void traverseRight(Node* root, vector<int> &ans){
26+
if(root == NULL || (root -> left == NULL && root -> right == NULL)) return;
27+
28+
29+
if(root -> right) traverseRight(root -> right, ans);
30+
else traverseRight(root -> left, ans);
31+
32+
ans.push_back(root -> data);
33+
}
34+
35+
36+
vector <int> boundary(Node *root)
37+
{
38+
vector<int> ans;
39+
if(root == NULL) return ans;
40+
41+
ans.push_back(root -> data);
42+
43+
traverseLeft(root -> left, ans);
44+
45+
traverseLeaf(root -> left, ans);
46+
traverseLeaf(root -> right, ans);
47+
48+
traverseRight(root -> right, ans);
49+
50+
return ans;
51+
}
52+
};

0 commit comments

Comments
 (0)