以下函数实现了二叉排序树(BST)的( )操作。
TreeNode* op(TreeNode* root, int x) {
if (!root) return new TreeNode(x);
if (x < root->val)
root->left = op(root->left, x);
else
root->right = op(root->right, x);
return root;
}排列组合问题:先判断是否考虑顺序(排列P vs 组合C),再确定是否允许重复。乘法原理分步,加法原理分类。
区分排列(考虑顺序,$P(n,m)$)和组合(不考虑顺序,$C(n,m)$)。注意特殊元素优先处理、正难则反等计数技巧。
GESP 六级《数据结构》模块明确考查 BST 基础操作。命题人卡住的是“看到树就能联想到插入,但写不出递归逻辑”的考生——很多学生知道 BST 性质,却对递归边界条件(如空树)理解模糊。
看到 BST 操作题先找递归出口:空树直接新建节点,否则沿路径比较大小决定左右子树。本题关键观察是“新节点只出现在递归终止时”,返回值始终指向被修改的子树根,因此函数整体是“插入并返回更新后的根”。这一类题通法是:识别数据结构(BST)→ 定位操作(插入/查找/删除)→ 拆解递归分支(左小右大)→ 验证边界条件(空树)。