下列函数实现了二叉树的哪种遍历方式( )。
void visit(TreeNode *root) {
if (root == nullptr)
return;
visit(root->left);
cout << root->val << " ";
visit(root->right);
}看到递归函数先找调用顺序。本题是左子树递归→访问根节点→右子树递归,典型的中序遍历特征。若改成根节点先访问就是前序,根节点最后访问就是后序。
选项A前序遍历是根左右,代码里根节点访问在左子树之后;选项C后序遍历是左右根,根节点访问在右子树之后;选项D层序遍历需要队列实现,本题用递归。易错点在于混淆前序和中序,都涉及左子树优先,区别在于根节点访问时机。
GESP六级大纲"数据结构"模块明确列出二叉树遍历为必考内容,命题人放这道题就是卡住那些死记硬背定义却看不懂代码的学生。
看到递归函数先找调用顺序。本题是左子树递归→访问根节点→右子树递归,典型的中序遍历特征。若改成根节点先访问就是前序,根节点最后访问就是后序。