Допустим, наше двоичное дерево (BT) выглядит следующим образом:
Photo PresentationUningUning Scoding как Bt < /p>
Node* root = new Node();
root->left = new Node("B");
root->right = new Node();
root->right->right = new Node("A");
root->right->left = new Node();
root->right->left->right = new Node("D");
root->right->left->left = new Node("C");
< /code>
И нам дают строку «01111».
Эта строка должна декодировать на «baa». < /p>
Я не могу обернуть голову вокруг «условной» рекурсии. Я особенно застрял на том, чтобы функция продолжала обрабатывать строку после первого "1". Все мои предыдущие попытки сделают программу закончить и только напечатать «b a».void Decode(const string& unambiguous_message, const Node* root, const Node* current, size_t index = 0) {
// Base case: if index reaches the end of the string, stop
if (index >= unambiguous_message.length()) {
return;
}
if (current->left == nullptr && current->right == nullptr) {
cout data left != nullptr) {
Decode(unambiguous_message, root, current->left, index + 1);
} else if (unambiguous_message[index] == '1' && current->right != nullptr) {
Decode(unambiguous_message, root, current->right, index + 1);
} else {
// Invalid path: restart from root at next index to try next prefix
Decode(unambiguous_message, root, root, index + 1);
}
}
< /code>
Кроме того, если есть лучший способ перевести BT с изображения на код, пожалуйста, поделитесь. Оставьте этот код в клочья. Предоставьте более умный, краткий, чистый и более эффективный выбор. Я хотел бы учиться на ваших ответах.
Спасибо!
Я ожидаю, что строка будет полностью обработана.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ecursively
Учитывая ввод строки, как мы можем пересечь бинарное дерево рекурсивно ⇐ C++
Программы на C++. Форум разработчиков
1758601151
Anonymous
Допустим, наше двоичное дерево (BT) выглядит следующим образом:
Photo PresentationUningUning Scoding как Bt < /p>
Node* root = new Node();
root->left = new Node("B");
root->right = new Node();
root->right->right = new Node("A");
root->right->left = new Node();
root->right->left->right = new Node("D");
root->right->left->left = new Node("C");
< /code>
И нам дают строку «01111».
Эта строка должна декодировать на «baa». < /p>
Я не могу обернуть голову вокруг «условной» рекурсии. Я особенно застрял на том, чтобы функция продолжала обрабатывать строку после первого "1". Все мои предыдущие попытки сделают программу закончить и только напечатать «b a».void Decode(const string& unambiguous_message, const Node* root, const Node* current, size_t index = 0) {
// Base case: if index reaches the end of the string, stop
if (index >= unambiguous_message.length()) {
return;
}
if (current->left == nullptr && current->right == nullptr) {
cout data left != nullptr) {
Decode(unambiguous_message, root, current->left, index + 1);
} else if (unambiguous_message[index] == '1' && current->right != nullptr) {
Decode(unambiguous_message, root, current->right, index + 1);
} else {
// Invalid path: restart from root at next index to try next prefix
Decode(unambiguous_message, root, root, index + 1);
}
}
< /code>
Кроме того, если есть лучший способ перевести BT с изображения на код, пожалуйста, поделитесь. Оставьте этот код в клочья. Предоставьте более умный, краткий, чистый и более эффективный выбор. Я хотел бы учиться на ваших ответах.
Спасибо!
Я ожидаю, что строка будет полностью обработана.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79772208/given-the-string-input-how-can-we-traverse-the-binary-tree-recursively[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия