错误写法
void BST_add(BST *bst,int e) {
bst->root = lrnode_add(bst,bst->root, e);//lrnode_add方法定义在后面
}
//向以node为根的二分搜索树中插入元素e,递归算法
//返回插入新节点后二分搜索树的根
lrNode* lrnode_add(BST *bst, lrNode *node, int e) {
if (node == NULL) {
bst->size++;
return create_lrNode(e);
}
if (e < node->e)
node->left = lrnode_add(bst, node->left, e);
else if (e > node->e)
node->right = lrnode_add(bst, node->right, e);
return node;
}
正确写法
//向以node为根的二分搜索树中插入元素e,递归算法
//返回插入新节点后二分搜索树的根
lrNode* lrnode_add(BST *bst, lrNode *node, int e) {
if (node == NULL) {
bst->size++;
return create_lrNode(e);
}
if (e < node->e)
node->left = lrnode_add(bst, node->left, e);
else if (e > node->e)
node->right = lrnode_add(bst, node->right, e);
return node;
}
void BST_add(BST *bst,int e) {
bst->root = lrnode_add(bst,bst->root, e);
}