{
public:
int data;
Node* LeftChild;
Node* RightChild;
Node* Parent;
bool First;
Node(int data = 0, bool First = false, Node* Parent = nullptr, Node* LeftChild = nullptr, Node* RightChild = nullptr)
{
this->Parent = Parent;
this->LeftChild = LeftChild;
this->RightChild = RightChild;
this->data = data;
this->First = First;
}
};
Node Element;
Node* pElement;
public:
/*struct Tree { //пример
Node* pElement;
void Add(int data, Node* temp) {
Add(data, temp); // какая-нибудь рекурсия
}
void Add(int data) { return Add(data, pElement); }
};*/
BTree(int data)
{
Add(data);
};
BTree() {};
void Add(int data, Node* temp)
{
//Node* current = pElement;
if (Element.First == false)
{
pElement = new Node(data);
Element.First = true;
}
else
{
if (data < temp->data) //if <
{
if (temp->LeftChild != nullptr) { temp = temp->LeftChild; Add(data, temp); };
temp->LeftChild = new Node(data);
temp->LeftChild->Parent = temp;
}
else //if >
{
if (temp->RightChild != nullptr) { temp = temp->RightChild; Add(data, temp); };
temp->RightChild = new Node(data);
temp->RightChild->Parent = temp;
}
}
}
void Add(int data)
{
return Add(data, pElement);
}
};
int main()
{
BTree tree;
tree.Add(10);
tree.Add(5);
tree.Add(15);
tree.Add(13);
tree.Add(14);
tree.Add(12);
return 0;
}
прчему начиная с добаления 13 все записывается в двух детях?
Берете отладчик и идете по шагам
все я разобрался
да поменяй ник уже
Обсуждают сегодня