#include <iostream>
#include <vector>
using namespace std;
// Node Structure
class Node {
public:
int data;
Node* left;
Node* right;
Node(int x) {
data = x;
left = right = nullptr;
}
};
// Recursive function to find left view
void recLeftView(Node* root, int level, vector<int>& result) {
if (root == nullptr) return;
// first node of current level
if (level == result.size()) {
result.push_back(root->data);
}
recLeftView(root->right, level + 1, result);
recLeftView(root->left, level + 1, result);
}
// Function which return left view of binary tree
vector<int> leftView(Node* root) {
vector<int> result;
recLeftView(root, 0, result);
return result;
}
int main() {
// Create binary tree
// 1
// / \
// 2 3
// /
// 4
// \
// 5
Node* root = new Node(1);
root->left = new Node(2);
root->right = new Node(3);
root->right->left = new Node(4);
root->right->left->right = new Node(5);
vector<int> view = leftView(root);
for (int val : view)
cout << val << " ";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gTm9kZSBTdHJ1Y3R1cmUKY2xhc3MgTm9kZSB7CnB1YmxpYzoKICAgIGludCBkYXRhOwogICAgTm9kZSogbGVmdDsKICAgIE5vZGUqIHJpZ2h0OwoKICAgIE5vZGUoaW50IHgpIHsKICAgICAgICBkYXRhID0geDsKICAgICAgICBsZWZ0ID0gcmlnaHQgPSBudWxscHRyOwogICAgfQp9OwoKLy8gUmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGZpbmQgbGVmdCB2aWV3CnZvaWQgcmVjTGVmdFZpZXcoTm9kZSogcm9vdCwgaW50IGxldmVsLCB2ZWN0b3I8aW50PiYgcmVzdWx0KSB7CiAgICBpZiAocm9vdCA9PSBudWxscHRyKSByZXR1cm47CgogICAgLy8gZmlyc3Qgbm9kZSBvZiBjdXJyZW50IGxldmVsCiAgICBpZiAobGV2ZWwgPT0gcmVzdWx0LnNpemUoKSkgewogICAgICAgIHJlc3VsdC5wdXNoX2JhY2socm9vdC0+ZGF0YSk7CiAgICB9CgogIAogICAgcmVjTGVmdFZpZXcocm9vdC0+cmlnaHQsIGxldmVsICsgMSwgcmVzdWx0KTsKICAgIAogICAgICByZWNMZWZ0Vmlldyhyb290LT5sZWZ0LCBsZXZlbCArIDEsIHJlc3VsdCk7Cn0KCi8vIEZ1bmN0aW9uIHdoaWNoIHJldHVybiBsZWZ0IHZpZXcgb2YgYmluYXJ5IHRyZWUKdmVjdG9yPGludD4gbGVmdFZpZXcoTm9kZSogcm9vdCkgewogICAgdmVjdG9yPGludD4gcmVzdWx0OwogICAgcmVjTGVmdFZpZXcocm9vdCwgMCwgcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgLy8gQ3JlYXRlIGJpbmFyeSB0cmVlCgogICAgLy8gICAgMQogICAgLy8gICAvIFwKICAgIC8vICAyICAgMwogICAgLy8gICAgIC8KICAgIC8vICAgIDQKICAgIC8vICAgICBcCiAgICAvLyAgICAgIDUKCiAgICBOb2RlKiByb290ID0gbmV3IE5vZGUoMSk7CiAgICByb290LT5sZWZ0ID0gbmV3IE5vZGUoMik7CiAgICByb290LT5yaWdodCA9IG5ldyBOb2RlKDMpOwogICAgcm9vdC0+cmlnaHQtPmxlZnQgPSBuZXcgTm9kZSg0KTsKICAgIHJvb3QtPnJpZ2h0LT5sZWZ0LT5yaWdodCA9IG5ldyBOb2RlKDUpOwoKICAgIHZlY3RvcjxpbnQ+IHZpZXcgPSBsZWZ0Vmlldyhyb290KTsKICAgIGZvciAoaW50IHZhbCA6IHZpZXcpCiAgICAgICAgY291dCA8PCB2YWwgPDwgIiAiOwp9