C++ 如何更改BST树中所有节点的值?

C++ 如何更改BST树中所有节点的值?,c++,tree,binary-search-tree,C++,Tree,Binary Search Tree,如何更改树中所有节点的值 我用多个键值填充了我的BST树 一切都很完美,我只是不知道如何通过添加log2来更改所有节点的值 如何遍历每个节点 my Node.hpp class Node{ private: Node *left; //left child Node *right; //right child std::string num; publi

如何更改树中所有节点的值

我用多个键值填充了我的BST树

一切都很完美,我只是不知道如何通过添加log2来更改所有节点的值

如何遍历每个节点

my Node.hpp

class Node{

    private:
        Node *left;                     //left child
        Node *right;                    //right child
        std::string num;
    public:
        int data;                       //number
        Node();                         //constructor
        void setData(string num, int data);         //sets number in node
        string getData();                   //return numbers from node
        int &getOcc();
        void setLeft(Node *l);          //sets left child pointer
        Node* &getLeft();                //returns left child pointer
        void setRight(Node *r);         //sets right child pointer
        Node* &getRight();               //return right child pointer
};

我的BST.hpp

class BST{

    private:
        Node * root;        //root node pointer

    public:
        BST();                                  //constructor
        ~BST();                                 //destructor
        void Insert(string num, int data);      //Inserts new number in tree
        void InsertIDF(string num, int data);      //Inserts new number in tree
        bool find(string num);                 //finds whether a number is present in tree
        void min();                             //find and print minimum number in the tree
        void max();                             //find and print maximum number in the tree
        void save_file(string filename);        //save the tree to file
        void Delete(string num);                //deletes a number from tree
        void LoadFromFile(string filename);     //loads numbers from file to tree
        void Print();                           //print tree to stdout


        //private functions used as helper functions in the public operations
    private:
        void printHelper(Node *root);
        bool findHelper(Node *root,string num);
        void InsertHelper(Node * &current, string num, int data);
        void InsertHelperIDF(Node * &current, string num, int data);
        void findMinHelper(Node* current);
        void findMaxHelper(Node * current);
        void saveHelper(ofstream &fout, Node* current);
        Node* DeleteHelper(Node *current, string num);
        Node * findMaximum(Node * n);
        void clear(Node *currnt);
};


由于您对
节点
BST
有不同的概念(这很好),因此需要一个函数作用于节点,用您决定的任何规则修改节点的值,并对该节点的子节点调用自身

然后,您可以通过使用包装器函数将其封装在BST中,该包装器函数以根节点为参数调用上述函数

让第一个开始工作,然后做下一个


由于这显然是一个家庭作业,实现被省略了几周。

通过递归,更改当前节点的值,然后调用兄弟节点的更改。你的意思是,我创建了一个函数来更改值并在其中调用它?你想向树中的每个节点添加log(2)\u base10吗?如果我有一个节点的值,我该如何修改它以得到你想要的结果?我会编辑我的帖子一秒钟为什么你要将数字存储在字符串中?您可以添加一个方法,该方法将指向节点的指针作为输入,增加此$\log\u 2$存储的值,然后从silling节点调用此方法。为根节点调用此方法