由于你没有将返回值赋值给树,所以新创建的节点没有和原本的二叉树建立起联系。其实就是,新建立的节点并没有添加给二叉树:)
请参考课程的官方代码:https://github.com/liuyubobobo/Play-with-Algorithms/blob/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/03-Binary-Search-Tree-Insert/main.cpp
// 向以node为根的二分搜索树中, 插入节点(key, value), 使用递归算法
// 返回插入新节点后的二分搜索树的根
Node* insert(Node *node, Key key, Value value){
if( node == NULL ){
count ++;
return new Node(key, value);
}
if( key == node->key )
node->value = value;
else if( key < node->key )
// 注意:insert的结果必须赋值给node->left,
// 才能将新添加的节点挂接到二叉树上
node->left = insert( node->left , key, value);
else // key > node->key
// 同理:insert的结果必须赋值给node->right,
// 才能将新添加的节点挂接到二叉树上
node->right = insert( node->right, key, value);
return node;
}
这个课程的所有代码都可以通过课程官方github获得。遇到按照视频尝试编写代码却出现错误,自己也调试不好的情况,可以尝试在你的环境下运行课程的官方代码看是否有同样的问题。如果没有问题,可以仔细和课程的官方代码进行调试比对,看看自己的代码哪里有问题:)
课程官方代码传送门:https://github.com/liuyubobobo/Play-with-Algorithms
加油!:)