Skip to content

Commit 96b9a1a

Browse files
committed
Trees
1 parent fcab740 commit 96b9a1a

File tree

5 files changed

+432
-1
lines changed

5 files changed

+432
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
hackerrank/build/
22
hackerrank/cmake-build-debug/
33
hackerrank/.idea/
4+
hackerrank/.vscode/
45
DCP/build/
56
DCP/cmake-build-debug/
67
DCP/.idea/

hackerrank/CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,10 @@ add_executable(insert_node_dll src/insert_node_dll.cpp)
9898

9999
add_executable(reverse_dll src/reverse_dll.cpp)
100100

101-
add_executable(merge_ll src/merge_ll.cpp)
101+
add_executable(merge_ll src/merge_ll.cpp)
102+
103+
add_executable(tree_traversal src/tree_traversal.cpp)
104+
105+
add_executable(tree_insert src/tree_insert.cpp)
106+
107+
add_executable(dynamic_seq src/dynamic_seq.cpp)

hackerrank/src/dynamic_seq.cpp

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
string ltrim(const string &);
6+
string rtrim(const string &);
7+
vector<string> split(const string &);
8+
9+
/*
10+
* Complete the 'dynamicArray' function below.
11+
*
12+
* The function is expected to return an INTEGER_ARRAY.
13+
* The function accepts following parameters:
14+
* 1. INTEGER n
15+
* 2. 2D_INTEGER_ARRAY queries
16+
*/
17+
18+
vector<int> dynamicArray(int n, vector<vector<int>> queries) {
19+
vector<vector<int>> arrayCreation(n);
20+
vector<int> answers;
21+
int currentAnswer = 0;
22+
for(auto const& val:queries)
23+
{
24+
int currRes = (val[1]^currentAnswer)%n;
25+
if(val[0] == 1)
26+
{
27+
arrayCreation[currRes].push_back(val[2]);
28+
}
29+
else
30+
{
31+
// Should be 2
32+
int modIdx = val[2]%arrayCreation[currRes].size();
33+
currentAnswer = arrayCreation[currRes][modIdx];
34+
answers.push_back(currentAnswer);
35+
}
36+
}
37+
return answers;
38+
}
39+
40+
int main()
41+
{
42+
ofstream fout(getenv("OUTPUT_PATH"));
43+
44+
string first_multiple_input_temp;
45+
getline(cin, first_multiple_input_temp);
46+
47+
vector<string> first_multiple_input = split(rtrim(first_multiple_input_temp));
48+
49+
int n = stoi(first_multiple_input[0]);
50+
51+
int q = stoi(first_multiple_input[1]);
52+
53+
vector<vector<int>> queries(q);
54+
55+
for (int i = 0; i < q; i++) {
56+
queries[i].resize(3);
57+
58+
string queries_row_temp_temp;
59+
getline(cin, queries_row_temp_temp);
60+
61+
vector<string> queries_row_temp = split(rtrim(queries_row_temp_temp));
62+
63+
for (int j = 0; j < 3; j++) {
64+
int queries_row_item = stoi(queries_row_temp[j]);
65+
66+
queries[i][j] = queries_row_item;
67+
}
68+
}
69+
70+
vector<int> result = dynamicArray(n, queries);
71+
72+
for (int i = 0; i < result.size(); i++) {
73+
fout << result[i];
74+
75+
if (i != result.size() - 1) {
76+
fout << "\n";
77+
}
78+
}
79+
80+
fout << "\n";
81+
82+
fout.close();
83+
84+
return 0;
85+
}
86+
87+
string ltrim(const string &str) {
88+
string s(str);
89+
90+
s.erase(
91+
s.begin(),
92+
find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
93+
);
94+
95+
return s;
96+
}
97+
98+
string rtrim(const string &str) {
99+
string s(str);
100+
101+
s.erase(
102+
find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
103+
s.end()
104+
);
105+
106+
return s;
107+
}
108+
109+
vector<string> split(const string &str) {
110+
vector<string> tokens;
111+
112+
string::size_type start = 0;
113+
string::size_type end = 0;
114+
115+
while ((end = str.find(" ", start)) != string::npos) {
116+
tokens.push_back(str.substr(start, end - start));
117+
118+
start = end + 1;
119+
}
120+
121+
tokens.push_back(str.substr(start));
122+
123+
return tokens;
124+
}

hackerrank/src/tree_insert.cpp

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
class Node {
6+
public:
7+
int data;
8+
Node *left;
9+
Node *right;
10+
Node(int d) {
11+
data = d;
12+
left = NULL;
13+
right = NULL;
14+
}
15+
};
16+
17+
class Solution {
18+
public:
19+
20+
void preOrder(Node *root) {
21+
22+
if( root == NULL )
23+
return;
24+
25+
std::cout << root->data << " ";
26+
27+
preOrder(root->left);
28+
preOrder(root->right);
29+
}
30+
31+
/*
32+
Node is defined as
33+
34+
class Node {
35+
public:
36+
int data;
37+
Node *left;
38+
Node *right;
39+
Node(int d) {
40+
data = d;
41+
left = NULL;
42+
right = NULL;
43+
}
44+
};
45+
46+
*/
47+
48+
Node * insert(Node * root, int data) {
49+
if(root == NULL)
50+
{
51+
root = new Node(data);
52+
return root;
53+
}
54+
Node* dummy = root;
55+
while(root != NULL)
56+
{
57+
if(root->data > data)
58+
{
59+
// Go left
60+
if(root->left)
61+
{
62+
root = root->left;
63+
}
64+
else
65+
{
66+
root->left = new Node(data);
67+
break;
68+
}
69+
}
70+
else
71+
{
72+
// Go right
73+
if(root->right)
74+
{
75+
root = root->right;
76+
}
77+
else
78+
{
79+
root->right = new Node(data);
80+
break;
81+
}
82+
}
83+
}
84+
return dummy;
85+
}
86+
87+
Node * rec(Node * cur, int data)
88+
{
89+
if(cur == NULL)
90+
{
91+
cur = new Node(data);
92+
}
93+
else if(cur->data > data)
94+
{
95+
cur->left = rec(cur->left, data);
96+
}
97+
else
98+
{
99+
cur->right = rec(cur->right, data);
100+
}
101+
return cur;
102+
103+
}
104+
105+
Node * insertRec(Node * root, int data)
106+
{
107+
if(root==NULL)
108+
{
109+
root = new Node(data);
110+
return root;
111+
}
112+
else
113+
{
114+
Node* dummy = root;
115+
rec(dummy, data);
116+
return root;
117+
}
118+
119+
}
120+
121+
};
122+
123+
int main() {
124+
125+
Solution myTree;
126+
Node* root = NULL;
127+
128+
int t;
129+
int data;
130+
131+
std::cin >> t;
132+
133+
while(t-- > 0) {
134+
std::cin >> data;
135+
//root = myTree.insert(root, data);
136+
root = myTree.insertRec(root, data);
137+
}
138+
139+
myTree.preOrder(root);
140+
141+
return 0;
142+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy