Node* insert(Node* node,Key key,Value value)函数的子节点赋值
来源:5-2 二分搜索树基础 (Binary Search Tree)
SD_Kaden
2018-09-01
写回答
1回答
-
由于你没有将返回值赋值给树,所以新创建的节点没有和原本的二叉树建立起联系。其实就是,新建立的节点并没有添加给二叉树:)
// 向以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
加油!:)
212018-09-02
相似问题