народ подскажите как сделать сер БД. общий вид структуры struct Node { int Data; Node* pOwner; Node* pLeft; Node* pRight; }; В принципе можно сделать карту кто к кому принадлежит. но мне бы хотелось знать что нить профессиональное - либо натолкните на какой нить алгоритм. что по этому поводу говорит Кнут!? Заранее спасибо!
Я бы сохранял у родителей кол-во дочерних узлов (в данном случае от 0 до 2), и расположил бы узлы по иерархии.
Код (Text): void SaveNode(Node* node) { Write(node->Data); Children->Left = (node->pLeft != NULL); Children->Right = (node->pRight != NULL); Write(Children); if (node->pLeft) SaveNode(node->pLeft); if (node->pRight) SaveNode(node->pRight); } void LoadNode(Node* node) { Read(node->Data); Read(Children); if (Children->Left) { node->pLeft = new Node; LoadNode(node->pLeft); node->pLeft->pOwner = node; } if (Children->Right) { node->pRight = new Node; LoadNode(node->pRight); node->pRight->pOwner = node; } }
rmn а что такое Children? Children->Left = (node->pLeft != NULL); Children->Right = (node->pRight != NULL); Write(Children); Скажи, этот алгоритм как нить по особому называется?
ну, это типа структура, в которой два поля типа bool - Left и Right. Если значение поля - true, значит у узла есть соответствующая ветка. хз