三叉搜索树插入节点时触发Read Access Violation异常求助
问题修复方案
核心问题
你遇到的Read Access Violation异常,根源是节点创建时未初始化mid指针。VS中0xcdcdcdcd代表未初始化的堆内存,当插入的key落在当前节点key的±500范围内时,代码会递归操作root->mid,但这个指针未被初始化为NULL,访问野指针就会触发内存异常。
修复代码
修改create_BiTreeNode函数,补充mid指针的初始化:
BiTree create_BiTreeNode(int key) { BiTNode* node = (BiTNode*)malloc(sizeof(BiTNode)); node->key = key; node->left = NULL; node->mid = NULL; // 新增这一行,初始化mid指针 node->right = NULL; return node; }
额外优化建议(可选)
Max函数可以简化逻辑,避免冗余判断:int Max(int a, int b, int c) { int temp = a > b ? a : b; return temp > c ? temp : c; }- 注意
scanf_s是VS特定函数,如果需要跨平台兼容性,可以替换为标准的scanf。
内容的提问来源于stack exchange,提问作者user25600088
相关产品推荐
相关产品推荐

