【发布时间】:2020-10-04 18:14:53
【问题描述】:
我正在为一个类编写一个二叉搜索树,我可能做错了什么,但我无法确定是什么。
这是节点结构:
typedef struct Node {
int value;
struct Node *left;
struct Node *right;
} Node, *NodePtr;
这是我的创建节点函数:
NodePtr nodeCreate(int value) {
NodePtr node_new = 0;
node_new = (NodePtr) malloc(sizeof node_new);
node_new->value = value;
node_new->left = 0;
node_new->right = 0;
return node_new;
}
而我的销毁整个树函数:
void treeDestroy(NodePtr root) {
if (!root) { return; }
treeDestroy(root->left);
treeDestroy(root->right);
free(root); // HERE IS WHERE MY BREAKPOINT TRIGGERS
root = 0;
}
最后这是我的主要外观:
int main(int argc, char *argv[]) {
NodePtr tree_root = 0;
tree_root = nodeCreate(2);
tree_root->left = nodeCreate(1);
tree_root->right = nodeCreate(3);
treePrint(tree_root);
treeDestroy(tree_root);
return 0;
}
谁能帮我找出问题所在?
【问题讨论】:
标签: c pointers memory-management binary-tree