Тема: Помилка при обробці посилання на вказівник
Треба обійти дерево і зібрати все листя.
Зробив ось так:
void check_trees(TreeNode *root, vector<int> &leafs) {
stack<TreeNode *> root_nodes;
root_nodes.push(root);
while (!root_nodes.empty()) {
const auto node = root_nodes.top();
root_nodes.pop();
if (!node->left && !node->right) {
leafs.push_back(node->val);
}
if (node->left) {
root_nodes.push(node->left);
}
if (node->right) {
root_nodes.push(node->right);
}
}
}
Але спочатку я використав посилання на вказівник, ось тут:
const auto &node = root_nodes.top();
І в такому варіанті збиралася лише частина листя в деяких випадках.
Чому так?