二分搜索树课程中老师的add代码是这样写的(我弄成了c++代码):
Node* add(Node *node, int e){
if(node == nullptr){
node = new Node(e);
return node;
}
if(node->data > e) {
node->left = add(node->left, e);
}
else {
node->right = add(node->right, e);
}
return node;
}
很直观,容易看懂
但是我徒手撸的时候,写成了这样:
void add(Node *node, int e){
if(node == nullptr){
node = new Node(e);
return;
}
if(node->data == e) return;
if(node->data > e) add(node->left, e);
else add(node->right, e);
}
如果这么写程序会崩溃,我想了很久,也在纸上画了画,就是想不出来哪里出了问题。请问和您写的带返回值的add,我的版本有什么漏洞?