【发布时间】:2021-03-20 11:12:13
【问题描述】:
我正在尝试切换二叉树子树,但是我得到了 SIGSEV,但我不知道如何解决这个问题
我的树结构:
typedef struct Tree_node_ Tree_node;
typedef Tree_node* Tree;
struct Tree_node_
{
int value;
Tree left;
Tree right;
};
切换子树代码:
void switch(Tree t) {
Tree temp = malloc(sizeof(t));
temp = t;
t = t->left;
temp->left = t->right;
t->right = temp;
}
当我尝试阅读 t->right 时发生错误
【问题讨论】:
-
temp = t;这个分配覆盖了malloc。 -
@kiranBiradar 我已经尝试分配新的温度,通过给它赋值,左,右 t,但仍然没有运气。
-
temp应该只是一个单一的指针:temp = t->left; t->left = t->right; t->right = temp;当然,它已经只是一个单一的指针,但是您已经与typedef混淆了。故事的寓意:不要 typedef 指针。
标签: c pointers segmentation-fault binary-tree