gpt4 book ai didi

c++ - 二叉树只添加到根

转载 作者:行者123 更新时间:2023-11-28 05:58:27 24 4
gpt4 key购买 nike

我正在用 C++ 编写一个简单的二叉树程序,现在它只存储在根节点输入的最新值,例如。如果我在树中输入 10 然后在树中输入 9,9 只是覆盖 10 作为根节点,所以树只存储值 9。

我在网上查看了多个 C++ 二叉树解决方案并尝试了它们的实现版本,但我仍然没有成功。

这是树中单个节点的结构

struct TreeNode{

int value;
TreeNode *left;
TreeNode *right;

TreeNode(int value){

this -> value = value;
left = NULL;
right = NULL;

}
};

到目前为止我的二叉树类(class)

class IntTree{

private :

TreeNode *root;

public :

IntTree();
TreeNode* getRoot();
void insertValue(TreeNode *root, int intValue);
TreeNode* searchTree(TreeNode *root, int intValue);
void inOrder(TreeNode *root);
void deleteValue(int intValue);
void deleteTree(TreeNode *root);

};

插入方法

void IntTree::insertValue(TreeNode *root, int intValue){


if(root == NULL){

root = new TreeNode(intValue);

}

else if(intValue == root->value){

cout << "Value already exists in the tree" << endl;

}

else if(intValue < root->value){

insertValue(root->left, intValue);

}

else{

insertValue(root->right, intValue);

}
}

然后在这样的菜单中简单地调用此方法

cout << "Enter Value to Insert : " << endl;
input = readInt();
theTree.insertValue(theTree.getRoot(), input);

逻辑对我来说似乎都很好,除此之外我尝试不使用构造函数而只是单独设置变量,有两个函数用于插入一个只带有 int 参数的函数,所以我不必使用getRoot() 后来还有一百万个我忘记的东西

最佳答案

答案很简单,你正在修改的指针只是一个拷贝,所以这个拷贝在函数结束时被丢弃,你失去了内存。您需要对指针进行引用才能实际修改它(无需修改其他内容):

void insertValue(TreeNode *& root, int intValue)

关于c++ - 二叉树只添加到根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com