Q8 - Copy (2)
Q8 - Copy (2)
OUTPUT:
#include <iostream>
#include <stack>
Class Node
{
Public:
Node *lchild;
Int data;
Node *rchild;
};
Class BST
Private:
Node *root;
Public:
};
Node *t = root;
Node *p;
Node *r;
// root is empty
If (root == nullptr)
P = new Node;
p->data = key;
p->lchild = nullptr;
p->rchild = nullptr;
root = p;
return;
While (t != nullptr)
R = t;
T = t->lchild;
T = t->rchild;
Else
Return;
P = new Node;
p->data = key;
p->lchild = nullptr;
p->rchild = nullptr;
if (key < r->data)
r->lchild = p;
Else
r->rchild = p;
If (p)
Inorder(p->lchild);
Inorder(p->rchild);
Node *t = root;
While (t != nullptr)
If (key == t->data)
Return t;
T = t->lchild;
Else
T = t->rchild;
Return nullptr;
Node *t;
If (p == nullptr)
T = new Node;
t->data = key;
t->lchild = nullptr;
t->rchild = nullptr;
return t;
}
Return p; // key == p->data?
If (p == nullptr)
Return nullptr;
If (key == p->data)
Return p;
Else
Node *q;
If (p == nullptr)
Return nullptr;
}
If (p == root)
Root = nullptr;
Delete p;
Return nullptr;
Else
Q = InPre(p->lchild);
p->data = q->data;
Else
Q = InSucc(p->rchild);
p->data = q->data;
Return p;
Int x;
Int y;
If (p == nullptr)
Return 0;
X = Height(p->lchild);
Y = Height(p->rchild);
Return x > y ? x + 1 : y + 1;
P = p->rchild;
Return p;
{
While (p && p->lchild != nullptr)
P = p->lchild;
Return p;
Int i = 0;
Root->data = pre[i++];
Root->lchild = nullptr;
Root->rchild = nullptr;
// Iterative steps
Node *t;
Node *p = root;
While (i < n)
T = new Node;
t->data = pre[i++];
t->lchild = nullptr;
t->rchild = nullptr;
p->lchild = t;
stk.push(p);
p = t;
} Else
{ If (pre[i] > p->data && pre[i] < stk.empty() ? 32767 : stk.top()->data)
T = new Node;
t->data = pre[i++];
t->lchild = nullptr;
t->rchild = nullptr;
p->rchild = t;
p = t;
Else
P = stk.top();
Stk.pop();
If (p == nullptr)
Return true;
Int lh = Height(p->lchild);
Int rh = Height(p->rchild);
Return false;
}
Int main()
{ BST bst;
Bst.iInsert(10);
Bst.iInsert(5);
Bst.iInsert(20);
Bst.iInsert(8);
Bst.iInsert(30);
Bst.Inorder(bst.getRoot());
If (temp != nullptr)
Else
// Recursive search
If (temp != nullptr)
Else
// Recursive insert
Bst.rInsert(bst.getRoot(), 50);
Bst.rInsert(bst.getRoot(), 70);
Bst.rInsert(bst.getRoot(), 1);
Bst.Inorder(bst.getRoot());
<< endl;
BST bs;
Bs.iInsert(5);
Bs.iInsert(2);
Bs.iInsert(8);
Bs.iInsert(7);
Bs.iInsert(9);
Bs.iInsert(1);
Temp = bs.InPre(bs.getRoot());
Temp = bs.InSucc(bs.getRoot());
Bs.Inorder(bs.getRoot());
// Delete
Bs.Delete(bs.getRoot(), 5);
Bs.Inorder(bs.getRoot());
Int pre[] = {50, 15, 62, 5, 20, 58, 91, 3, 8, 37, 60, 24};
BST b;
b.createFromPreorder(pre, n);
b.Inorder(b.getRoot());
return 0;
OUTPUT
#include <iostream>
#include <vector>
using namespace std;
vector<int> adj[100];
void dfs(int sv, vector<int> &vis)
{
cout << sv << " ";
vis[sv] = true;
// visiting neighbors of sv
for (int i = 0; i < adj[sv].size(); i++)
{
int neighbor = adj[sv][i];
if (vis[neighbor] == false)
dfs(neighbor, vis);
}
}
int main()
{
int n, e;
cin >> n >> e;
while (e--)
{
int f, s;
cin >> f >> s;
adj[f].push_back(s);
}
vector<int> vis(n, 0);
dfs(0, vis);
return 0;
}
OUTPUT
OUTPUT: