以下代码实现了二叉树的中序遍历。输入以下二叉树,中序遍历结果是 4 2 5 1 3 6 。
// 1
// / \
// 2 3
// / \ \
// 4 5 6
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void inorderIterative(TreeNode* root) {
stack<TreeNode*> st;
TreeNode* curr = root;
while (curr || !st.empty()) {
while (curr) {
st.push(curr);
curr = curr->left;
}
curr = st.top(); st.pop();
cout << curr->val << " ";
curr = curr->right;
}
}仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】二叉树遍历|栈的应用|迭代转递归思维转换
本题考查 GESP 六级「数据结构与算法」模块的核心考点:二叉树中序遍历的迭代实现。命题人特意选择"判断正误"而非"填空/选择",就是要卡住那些只会背递归写法(左-根-右)的考生——六级开始重点考察栈的模拟能力和代码细节敏感度,这道题就是专门测试你是否真正理解迭代版本的执行流程,而不是机械记忆。