繁体   English   中英

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

[英]Binary Search Tree Data in Nodes always is zero

我已经在Binary搜索树上工作了一段时间,这些函数似乎可以正常工作,但是遇到了链表程序分配时遇到的相同问题。 我的节点似乎不想存储数据。 我不知道是什么问题。 当我打印时,它只打印零,正确的零个数,但仍然只是零。 这是我的节点代码。 我应该提到这是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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM