//Mọi người cho em xin ý tưởng cách viết hàm SetLeft và SetRight như nào để có thể thêm giá trị vào cây ạ, Do không thể truyền cây vào trong 2 hàm đó nên em chưa nghĩ được cách để thêm giá trị ạ. Em cảm ơn ạ
#include <iostream>
using namespace std;
struct Node
{
int info;
Node *pLeft, *pRight;
};
typedef Node *Tree;
Node *getNode(int x)
{
Node *p = new Node;
p->info = x;
p->pLeft = p->pRight = NULL;
return p;
}
Node *Search(Tree T, int b)
{
if (!T)
return NULL;
if (T->info > b)
return Search(T->pLeft, b);
else if (T->info < b)
return Search(T->pRight, b);
else
return T;
}
void SetLeft(Node *X, int c){
if (!X)
{
cout << "Node khong ton tai\n";
return;
}
else
{
if (X->pLeft->info == c)
{
cout << "Da co node con ben trai\n";
return;
}
else
X->pLeft->info = c;
}
}
void SetRight(Node *X, int c)
{
if (!X)
{
cout << "Node khong ton tai\n";
return;
}
else
{
if (X->pRight->info == c)
{
cout << "Da co node con ben phai\n";
return;
}
else
X->pRight->info = c;
}
}
void LNR(Tree T)
{
if (!T)
{
LNR(T->pLeft);
cout << T->info << " ";
LNR(T->pRight);
}
}
int main()
{
Tree T = NULL;
int x, b, c;
char a;
cin >> x;
T = getNode(x); // tao nut goc
while (true)
{
cin >> a; // Ky tu cho biet chen vao trai hay phai
if (a != 'L' && a != 'R')
break; // Neu khong phai L hoac R thi ket thuc viec tao cay
cin >> b >> c;
if (a == 'L')
SetLeft(Search(T, b), c); // chen c vao ben trai b
else if (a == 'R')
SetRight(Search(T, b), c); // chen c vao ben phai b
}
cout << "\nLNR: ";
LNR(T);
cout << endl;
return 0;
}