【发布时间】:2016-06-14 07:03:03
【问题描述】:
我正在实现一个二叉搜索树,但由于某些原因我无法添加节点
我的:输入是:
a.value = 5;
add_bst_node(&t,a);
我的结构:
typedef struct BST_node{
entity value;
struct BST_node* left;
struct BST_node* right;
}BST_node;
typedef struct BST_tree{
BST_node* root;
}BST_tree;
我添加节点的代码:
void add_bst_node2(BST_node* root,entity* e){
if(!root){
root = (BST_node*)malloc(sizeof(BST_node));
root->value = *e;
root->left = NULL;
root->right = NULL;
return;
}
else if(great_than(&root->value,e))
add_bst_node2(root->left,e);
else
add_bst_node2(root->right,e);
}
void add_bst_node(BST_tree* t,entity e){
add_bst_node2(t->root,&e);
printf("%d\n",t->root==NULL);
}
谁能解释我为什么不能添加节点?
【问题讨论】:
-
root是函数add_bst_node2中的局部变量。将其设置为一个值仅在函数范围内(运行时)有效。您应该调用add_bst_node2(&t->root...),将函数原型更改为BST_node** root,并设置*root = ...。 -
尝试将
void add_bst_node2(BST_node* root,entity* e)更改为void add_bst_node2(BST_node* &root,entity* e) -
@LPs:那么将
root作为输入参数传递有什么意义呢? -
@GauravSehgal:问题被标记为 C,而不是 C++。
-
@barakmanos。对不起,我的错。
标签: c malloc binary-search-tree