下列代码实现了树的深度优先遍历,则横线处应填入( )。
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x), left(nullptr), right(nullptr) {}
};
void dfs(TreeNode* root) {
if (!root) return;
stack<TreeNode*> st;
st.push(root);
while (!st.empty()) {
TreeNode* node = st.top(); st.pop();
cout << node->val << " ";
if (node->right) st.push(node->right);
___________________
}
}根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】栈的应用|树的深度优先遍历|递归模拟
GESP六级《数据结构与算法》模块,核心考查栈模拟递归的遍历能力。命题人卡住的是"用栈实现DFS时左右子树入栈顺序"——这是递归转迭代最容易翻车的地方,80%考生会凭直觉填错。