// C++ Program to print Bottom View of Binary Tree
#include<bits/stdc++.h>
using namespace std;
// Tree node class
struct Node
{
int data; //data of the node
Node *left, *right; //left and right references
// Constructor of tree node
Node(int key)
{
data = key;
left = right = NULL;
}
};
// Method that prints the bottom view.
void bottomView(Node *root);
/* Driver program to test size function*/
int main()
{
int t;
struct Node *child;
scanf("%d", &t);
while (t--)
{
map<int, Node*> m;
int n;
scanf("%d",&n);
struct Node *root = NULL;
while (n--)
{
Node *parent;
char lr;
int n1, n2;
scanf("%d %d %c", &n1, &n2, &lr);
if (m.find(n1) == m.end())
{
parent = new Node(n1);
m[n1] = parent;
if (root == NULL)
root = parent;
}
else
parent = m[n1];
child = new Node(n2);
if (lr == 'L')
parent->left = child;
else
parent->right = child;
m[n2] = child;
}
bottomView(root);
cout << endl;
}
return 0;
}
/*This is a function problem.You only need to complete the function given below*/
/* Tree node class
struct Node
{
int data; //data of the node
Node *left, *right; //left and right references
// Constructor of tree node
Node(int key)
{
data = key;
left = right = NULL;
}
}; */
// Method that prints the bottom view.
map<int,int>mp;
void dfs(Node* root,int d)
{
if(root==NULL){return;}
mp[d]=root->data;
dfs(root->left,d-1);
dfs(root->right,d+1);
return;
}
void bottomView(Node *root)
{
mp.clear();
dfs(root,0);
map<int, int>::iterator itr;
for(itr=mp.begin();itr!=mp.end();itr++)
{
cout<<itr->second<<" ";
}
}
Ci8vIEMrKyBQcm9ncmFtIHRvIHByaW50IEJvdHRvbSBWaWV3IG9mIEJpbmFyeSBUcmVlCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vIFRyZWUgbm9kZSBjbGFzcwpzdHJ1Y3QgTm9kZQp7CiAgICBpbnQgZGF0YTsgLy9kYXRhIG9mIHRoZSBub2RlCiAgICBOb2RlICpsZWZ0LCAqcmlnaHQ7IC8vbGVmdCBhbmQgcmlnaHQgcmVmZXJlbmNlcwogICAgLy8gQ29uc3RydWN0b3Igb2YgdHJlZSBub2RlCiAgICBOb2RlKGludCBrZXkpCiAgICB7CiAgICAgICAgZGF0YSA9IGtleTsKICAgICAgICBsZWZ0ID0gcmlnaHQgPSBOVUxMOwogICAgfQp9OwovLyBNZXRob2QgdGhhdCBwcmludHMgdGhlIGJvdHRvbSB2aWV3Lgp2b2lkIGJvdHRvbVZpZXcoTm9kZSAqcm9vdCk7Ci8qIERyaXZlciBwcm9ncmFtIHRvIHRlc3Qgc2l6ZSBmdW5jdGlvbiovCmludCBtYWluKCkKewogIGludCB0OwogIHN0cnVjdCBOb2RlICpjaGlsZDsKICBzY2FuZigiJWQiLCAmdCk7CiAgd2hpbGUgKHQtLSkKICB7CiAgICAgbWFwPGludCwgTm9kZSo+IG07CiAgICAgaW50IG47CiAgICAgc2NhbmYoIiVkIiwmbik7CiAgICAgc3RydWN0IE5vZGUgKnJvb3QgPSBOVUxMOwogICAgIHdoaWxlIChuLS0pCiAgICAgewogICAgICAgIE5vZGUgKnBhcmVudDsKICAgICAgICBjaGFyIGxyOwogICAgICAgIGludCBuMSwgbjI7CiAgICAgICAgc2NhbmYoIiVkICVkICVjIiwgJm4xLCAmbjIsICZscik7CiAgICAgICAgaWYgKG0uZmluZChuMSkgPT0gbS5lbmQoKSkKICAgICAgICB7CiAgICAgICAgICAgcGFyZW50ID0gbmV3IE5vZGUobjEpOwogICAgICAgICAgIG1bbjFdID0gcGFyZW50OwogICAgICAgICAgIGlmIChyb290ID09IE5VTEwpCiAgICAgICAgICAgICByb290ID0gcGFyZW50OwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgcGFyZW50ID0gbVtuMV07CiAgICAgICAgY2hpbGQgPSBuZXcgTm9kZShuMik7CiAgICAgICAgaWYgKGxyID09ICdMJykKICAgICAgICAgIHBhcmVudC0+bGVmdCA9IGNoaWxkOwogICAgICAgIGVsc2UKICAgICAgICAgIHBhcmVudC0+cmlnaHQgPSBjaGlsZDsKICAgICAgICBtW24yXSAgPSBjaGlsZDsKICAgICB9CiAgICAgYm90dG9tVmlldyhyb290KTsKICAgICBjb3V0IDw8IGVuZGw7CiAgfQogIHJldHVybiAwOwp9CgovKlRoaXMgaXMgYSBmdW5jdGlvbiBwcm9ibGVtLllvdSBvbmx5IG5lZWQgdG8gY29tcGxldGUgdGhlIGZ1bmN0aW9uIGdpdmVuIGJlbG93Ki8KLyogVHJlZSBub2RlIGNsYXNzCnN0cnVjdCBOb2RlCnsKICAgIGludCBkYXRhOyAvL2RhdGEgb2YgdGhlIG5vZGUKICAgIE5vZGUgKmxlZnQsICpyaWdodDsgLy9sZWZ0IGFuZCByaWdodCByZWZlcmVuY2VzCiAgICAvLyBDb25zdHJ1Y3RvciBvZiB0cmVlIG5vZGUKICAgIE5vZGUoaW50IGtleSkKICAgIHsKICAgICAgICBkYXRhID0ga2V5OwogICAgICAgIGxlZnQgPSByaWdodCA9IE5VTEw7CiAgICB9Cn07ICovCi8vIE1ldGhvZCB0aGF0IHByaW50cyB0aGUgYm90dG9tIHZpZXcuCm1hcDxpbnQsaW50Pm1wOwp2b2lkIGRmcyhOb2RlKiByb290LGludCBkKQp7CiAgICBpZihyb290PT1OVUxMKXtyZXR1cm47fQogICAgbXBbZF09cm9vdC0+ZGF0YTsKICAgIGRmcyhyb290LT5sZWZ0LGQtMSk7CiAgICBkZnMocm9vdC0+cmlnaHQsZCsxKTsKICAgIHJldHVybjsKfQp2b2lkIGJvdHRvbVZpZXcoTm9kZSAqcm9vdCkKewogICAgbXAuY2xlYXIoKTsKICAgIGRmcyhyb290LDApOwogICAgbWFwPGludCwgaW50Pjo6aXRlcmF0b3IgaXRyOwogICAgZm9yKGl0cj1tcC5iZWdpbigpO2l0ciE9bXAuZW5kKCk7aXRyKyspCiAgICB7CiAgICAgICAgY291dDw8aXRyLT5zZWNvbmQ8PCIgIjsKICAgIH0KfQ==