下面的代码实现了二叉树的前序遍历,它通过递归方法访问每个节点并打印节点值。
void preorder(TreeNode* root) {
if (root == NULL) return;
cout << root->val << " ";
preorder(root->left);
preorder(root->right);
}递归问题关注两点:① 递归边界(终止条件);② 递归关系(递推公式)。分析时展开前几步即可看出规律。
注意递归深度过大会导致栈溢出。递归必须包含终止条件,否则造成无限递归。
【考点】递归框架|二叉树遍历|前序遍历定义
GESP六级递归与树遍历模块。命题人卡住的是学生会不会把"前序"和"后序"搞混——这题就是送分陷阱,只要记住递归框架,就能直接得分。