我已经在我的二进制搜索树上工作了一段时间,这些功能似乎有效,但我遇到了与链接列表程序分配时遇到的问题相同的问题。我的节点似乎不想存储数据。我无法弄清楚问题是什么。当我打印它时只打印零,正确的零数,但仍然只是零。这是我的节点的代码。我应该提到这是C ++。
class Node{
friend class BST;
private:
int data;
Node *left;
Node *right;
public:
Node(int data);
};
我的添加功能是:
void BST::add(Node* node, int d) {
if (root == NULL) {
root = new Node(d);
}
else if (d <= node->data) {
if (node->left == NULL) {
node->left = new Node(d);
}
else {
add(node->left, d);
}
}
else if (d > node->data) {
if (node->right == NULL) {
node->right = new Node(d);
}
else {
add(node->right, d);
}
}
}
为什么不存储数据?
答案 0 :(得分:1)
请将您的Node::Node(int)
修改为:
Node::Node(int data) {
left = NULL;
right = NULL;
this->data = data;
}
评论中描述的Node::Node()
根本不会存储data
;并且您的BST::add()
依赖它将值存储到Node
s。