Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 节点中的二叉搜索树数据始终为零_C++_Binary Search Tree - Fatal编程技术网

C++ 节点中的二叉搜索树数据始终为零

C++ 节点中的二叉搜索树数据始终为零,c++,binary-search-tree,C++,Binary Search Tree,我已经在二叉搜索树上工作了一段时间,函数似乎可以工作,但我遇到了与我在链表程序分配中遇到的问题相同的问题。我的节点似乎不想存储数据。我想不出是什么问题。当我打印时,它只打印零,正确的零数,但仍然只有零。这是我的节点代码。我应该提到这是C++。 class Node{ friend class BST; private: int data; Node *left; Node *right; public: Node(int data);

我已经在二叉搜索树上工作了一段时间,函数似乎可以工作,但我遇到了与我在链表程序分配中遇到的问题相同的问题。我的节点似乎不想存储数据。我想不出是什么问题。当我打印时,它只打印零,正确的零数,但仍然只有零。这是我的节点代码。我应该提到这是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);
        }
    }
}
void BST::add(Node*Node,int d){
if(root==NULL){
根=新节点(d);
}
else if(d数据){
如果(节点->左==NULL){
节点->左=新节点(d);
}
否则{
添加(节点->左,d);
}
}
else if(d>节点->数据){
如果(节点->右侧==NULL){
节点->右侧=新节点(d);
}
否则{
添加(节点->右侧,d);
}
}
}

为什么不存储数据?

请将您的
节点::节点(int)
修改为:

Node::Node(int data) {
    left = NULL;
    right = NULL;
    this->data = data;
}
注释中描述的
节点::节点()
根本不存储
数据
;而您的
BST::add()
依赖它将值存储到
Node
s中。

您的
Node::Node(int)
是如何定义的?
Node::Node(int data){left=NULL;right=NULL;data;}