Мы все знаем, что мы должны использовать список, deque или другой объект вместо того, чтобы использовать классический список ссылок, как я думаю, это как список ссылок.
У меня есть тип, который я будупозвоните в ABC.У меня есть доступ ко всему через ABC root
.Тип ABC может содержать 0 или несколько букв ABC.Он также может содержать тип DE, FGH, D, E, F, G, H. DE также может содержать тип D и E. FGH может содержать FG, F, G, H. FG содержит ... Вы понимаете.Эти объекты также могут содержать 0 или многие из этого типа и его подтипов.
Проблема, с которой я сталкиваюсь, заключается в том, как написать это так, что если я нахожусь в типе F, я могу вызвать parent () и пройтиОбратно к корневому типу ABC?Давайте на самом деле забудем о типах FOR NOW и предположим, что все это тип BASE.Как бы я написал это дерево на C ++?Я думал о том, чтобы сделать что-то вроде этого
class Base{
deque<Base*> children
Base*parent;
}
Но это было похоже на список ссылок.Главным образом потому, что прогулка по дереву - это просто просмотр указателя за указателем, а это именно то, что делает список ссылок, а прогулка по дереву - указатель после удаления указателей.Есть ли какой-нибудь эффективный способ держать деревья и ходить по ним?Мое приложение связано с процессором и памятью, поэтому я не уверен, какой компромисс я хочу сделать.Как мне хранить эти данные?