【发布时间】:2015-02-14 16:25:26
【问题描述】:
大家好,
本学期我在大学学习了几乎没有任何先验知识的 C++ 编码课程(我对指针的理解仍然有些摇摆不定)。 我必须在 C++ 中实现一个二叉搜索树,我的问题如下: 在一个带有值和指向左右节点的指针的预定义节点结构上,我应该实现几个函数,其中两个是:
void InsertNode(Node* root, Node* node)
应该将手节点适合给定的树“根”, 还有一个叫
void InsertValue(Node* root, int value)
它应该使用传递的值创建节点结构的新实例,并将其放入给定的树“根”中。为此,我应该同时使用 CreateNode(用于创建具有 int 值和左/右指针设置为 NULL 的新 Node 实例的 Node* 指针的简单函数)和 InsertNode。
我有点在跑步机上跑步,我认为我并不真正了解这些功能应该如何工作(例如它们之间的区别)。 昨天我写了这个函数:
void InsertNode(Node* root, Node* node){
if(root == NULL){
root = CreateNode(node->value);
}
else if(root->value < node->value){
if(node->left != NULL){
InsertNode(root, node->left);
}
else{
node->left = CreateNode(root->value);
}
}
else if(root->value > node->value){
if(node->right != NULL){
InsertNode(root, node->right);
}
else{
node->right = CreateNode(root->value);
}
}
}
因为如果没有后面的函数,我真的无法测试这些函数,而后面的函数实际上会用给定的节点构建树,我很好奇我是否可以在这里得到一些关于下一个函数 InsertValue 的帮助(它应该做什么而不是 InsertNode已经做了吗?:S)
提前问候和感谢。
【问题讨论】:
标签: c++ pointers search binary-tree