forked from sachuverma/DataStructures-Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLeft View of Binary Tree.cpp
More file actions
63 lines (53 loc) · 1.21 KB
/
Left View of Binary Tree.cpp
File metadata and controls
63 lines (53 loc) · 1.21 KB
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
/*
Left View of Binary Tree
========================
Given a Binary Tree, print Left view of it. Left view of a Binary Tree is set of nodes visible when tree is visited from Left side. The task is to complete the function leftView(), which accepts root of the tree as argument.
Left view of following tree is 1 2 4 8.
1
/ \
2 3
/ \ / \
4 5 6 7
\
8
Example 1:
Input:
1
/ \
3 2
Output: 1 3
Example 2:
Input:
Output: 10 20 40
Your Task:
You just have to complete the function leftView() that prints the left view. The newline is automatically appended by the driver code.
Expected Time Complexity: O(N).
Expected Auxiliary Space: O(Height of the Tree).
Constraints:
0 <= Number of nodes <= 100
1 <= Data of a node <= 1000
*/
vector<int> leftView(Node *root)
{
if (!root)
return {};
vector<int> ans;
queue<Node *> q;
q.push(root);
while (q.size())
{
int size = q.size();
for (int i = size; i > 0; --i)
{
auto curr = q.front();
q.pop();
if (i == size)
ans.push_back(curr->data);
if (curr->left)
q.push(curr->left);
if (curr->right)
q.push(curr->right);
}
}
return ans;
}