节点中的二进制搜索树数据始终为零

Binary Search Tree Data in Nodes always is zero

本文关键字:数据 搜索树 二进制 节点      更新时间:2023-10-16

我在二进制搜索树上工作了一段时间,函数似乎可以工作,但我遇到了与链表程序分配时相同的问题。我的节点似乎不想存储数据。我搞不清问题出在哪里。当我打印时,它只打印零,正确的零数,但仍然只是零。这是我的节点代码。我应该提到这是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);
        }
    }
}

为什么它不存储数据?

请将您的Node::Node(int)修改为:

Node::Node(int data) {
    left = NULL;
    right = NULL;
    this->data = data;
}

您在评论中描述的Node::Node()根本不存储data;并且您的BST::add()依赖于它将值存储到Node s中。