You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现代码量更少的最简版二叉搜索树迭代式插入

二叉搜索树迭代式插入的简洁实现优化

你的代码存在冗余逻辑,同时未处理空树的边界情况(会触发未定义行为),以下是更简洁且健壮的实现:

优化后的代码

#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* left;
    struct Node* right;
} Node;

// 补充节点创建函数(原代码依赖此函数但未给出)
static Node* create_node_bst(int v) {
    Node* node = malloc(sizeof(Node));
    node->data = v;
    node->left = node->right = NULL;
    return node;
}

Node* insert_BST_it(Node* root, int v) {
    Node* node = create_node_bst(v);
    if (!root) return node; // 处理空树情况

    Node** curr = &root;
    while (*curr) {
        // 直接跟踪要插入的子树指针,无需额外标记
        curr = (v <= (*curr)->data) ? &(*curr)->left : &(*curr)->right;
    }
    *curr = node;
    return root;
}

简化说明

  • 去掉冗余标记变量:使用二级指针Node** curr直接跟踪需要插入的位置,无需hold和left变量记录方向,逻辑更直接
  • 修复空树bug:原代码未处理root为NULL的情况,优化后直接返回新创建的节点作为根
  • 精简分支逻辑:用三元运算符合并循环内的分支判断,减少重复代码
  • 修正语法问题:去掉原代码中多余的分号,修正变量名错误(原代码中elm应为v)

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:52:46