有同学把显式栈深度优先遍历写成:
while (!st.empty()) {
TreeNode* node = st.top(); st.pop();
cout << node->val << " ";
st.push(node->right);
st.push(node->left);
}
这份代码最可能出的问题是( )。
- A. 编译不通过:stack 不能存指针类型
- B. 输出顺序一定错误:栈版不允许先压右后压左之外的写法
- C. 把空指针压进栈,弹出后访问
node->val时运行时崩溃 - D. 没有问题,与判空写法完全等价