Skip to content

Commit 669f876

Browse files
committed
add new codes
1 parent 3c9d7de commit 669f876

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

Diff for: a.out

-1008 Bytes
Binary file not shown.

Diff for: connect-nodes-level-level-order-traversal.cpp

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// https://www.geeksforgeeks.org/connect-nodes-level-level-order-traversal/
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
5+
struct Node{
6+
int data;
7+
Node *left, *right, *nextRight;
8+
};
9+
10+
Node *getNode(int data){
11+
Node *temp = new Node();
12+
temp->data = data;
13+
temp->left = temp->right = temp->nextRight = NULL;
14+
return temp;
15+
}
16+
17+
void connect(Node *temp){
18+
queue<Node *> q;
19+
q.push(root);
20+
q.push(NULL);
21+
while(!q.empty()){
22+
Node *temp = q.front();
23+
q.pop();
24+
if(temp){
25+
temp->nextRight = q.front();
26+
if(temp->left)
27+
q.push(temp->left);
28+
if(temp->right)
29+
q.push(temp->right);
30+
}else if(!q.empty()){
31+
q.push(NULL);
32+
}
33+
}
34+
}
35+
36+
int main(){
37+
Node *root = getNode(1);
38+
root->left = getNode(2);
39+
root->right = getNode(3);
40+
root->left->left = getNode(4);
41+
root->left->right = getNode(5);
42+
root->right->left = getNode(6);
43+
root->right->right = getNode(8);
44+
connect(root);
45+
return 0;
46+
}

Diff for: fix-two-swapped-nodes-of-bst.cpp

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// https://www.geeksforgeeks.org/fix-two-swapped-nodes-of-bst/
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
5+
struct Node{
6+
int data;
7+
Node *left, *right, *nextRight;
8+
};
9+
10+
Node *getNode(int data){
11+
Node *temp = new Node();
12+
temp->data = data;
13+
temp->left = temp->right = temp->nextRight = NULL;
14+
return temp;
15+
}
16+
17+
void correct(Node *root, Node **first, Node **middle, Node **last, Node **prev){
18+
if(!root) return;
19+
correct(root->left,first,middle,last,prev);
20+
if(*prev && root->data < (*prev)->data){
21+
if(!*first){
22+
*first = *prev;
23+
*middle = root;
24+
}else
25+
*last = root;
26+
}
27+
*prev = root;
28+
correct(root->right,first,middle,last,prev);
29+
}
30+
31+
void inorder(Node *root){
32+
if(!root) return;
33+
inorder(root->left);
34+
cout << root->data << " ";
35+
inorder(root->right);
36+
}
37+
38+
39+
int main(){
40+
Node *root = getNode(10);
41+
root->left = getNode(5);
42+
root->right = getNode(8);
43+
root->left->left = getNode(2);
44+
root->left->right = getNode(20);
45+
Node *first = NULL, *middle = NULL, *last = NULL, *prev = NULL;
46+
correct(root, &first, &middle, &last, &prev);
47+
if(first && last)
48+
swap((first->data), (last->data));
49+
else if(first && middle)
50+
swap((first->data), (middle->data));
51+
inorder(root);
52+
return 0;
53+
}

0 commit comments

Comments
 (0)