hàm SetLeft và SetRight của em bị sai ở chỗ nào mà em không thêm phần tử vào cây nhị phân được ạ
#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 *K, int c)
{
if (K == NULL)
{
cout << "Node khong ton tai\n";
return;
}
if (K->pLeft->info == c)
{
cout << "Da co node con ben trai\n";
return;
}
K->pLeft->info = c;
return;
}
void SetRight(Node *K, int c)
{
if (K == NULL)
{
cout << "Node khong ton tai\n";
return;
}
if (K->pRight->info == c)
{
cout << "Da co node con ben phai\n";
return;
}
K->pRight->info = c;
return;
}
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); // Tạo nút gốc
while (true)
{
cin >> a; // Ký tự cho biết chèn vào trái hay phải
if (a != 'L' && a != 'R')
break; // Nếu không phải L hoặc R thì kết thúc việc tạo cây
cin >> b >> c;
if (a == 'L')
SetLeft(Search(T, b), c); // tìm nút có giá trị b, nếu có chèn c vào bên trái b
else if (a == 'R')
SetRight(Search(T, b), c); // tìm nút có giá trị b, nếu có chèn c vào bên phải b
}
cout << "\nLNR: ";
LNR(T);
cout << endl;
return 0;
}