C++ 如何更改BST树中所有节点的值?
如何更改树中所有节点的值 我用多个键值填充了我的BST树 一切都很完美,我只是不知道如何通过添加log2来更改所有节点的值 如何遍历每个节点 my Node.hppC++ 如何更改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
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 * ¤t, string num, int data);
void InsertHelperIDF(Node * ¤t, 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节点调用此方法。为根节点调用此方法