// Error a propósito: un decodificador que lee un bit antes de mirar si ya está en una hoja.
// Con un árbol de una sola hoja, que es el de un archivo con un solo símbolo, baja a un hijo que no existe.
#include <iostream>
#include <vector>

namespace {

struct Node {
    int symbol;
    int left;
    int right;
};

char decode_one(const std::vector<Node>& nodes, int root, bool bit) {
    int node = root;
    do {
        node = bit ? nodes[node].right : nodes[node].left;
    } while (nodes[node].left >= 0);
    return static_cast<char>(nodes[node].symbol);
}

}  // namespace

int main() {
    std::vector<Node> nodes = {{'a', -1, -1}};
    std::cout << decode_one(nodes, 0, false) << "\n";
    return 0;
}
