当在BST(二叉搜索树)的main函数中删除int后,BST代码停止工作的原因是缺少了一个变量来存储BST的根节点。在BST中,根节点是整个树的起点,没有根节点,整个树就无法正常运行。
为了解决这个问题,我们需要在删除int后,重新定义一个变量来存储BST的根节点。可以使用指针来指向根节点,并在代码中进行相应的修改。
以下是一个示例代码,展示了如何修复这个问题:
#include <iostream>
struct Node {
int data;
Node* left;
Node* right;
};
Node* createNode(int data) {
Node* newNode = new Node();
if (newNode != nullptr) {
newNode->data = data;
newNode->left = newNode->right = nullptr;
}
return newNode;
}
Node* insertNode(Node* root, int data) {
if (root == nullptr) {
root = createNode(data);
return root;
}
if (data < root->data) {
root->left = insertNode(root->left, data);
} else if (data > root->data) {
root->right = insertNode(root->right, data);
}
return root;
}
void inOrderTraversal(Node* root) {
if (root == nullptr) {
return;
}
inOrderTraversal(root->left);
std::cout << root->data << " ";
inOrderTraversal(root->right);
}
int main() {
Node* root = nullptr; // 创建一个空的根节点
// 插入节点
root = insertNode(root, 50);
root = insertNode(root, 30);
root = insertNode(root, 20);
root = insertNode(root, 40);
root = insertNode(root, 70);
root = insertNode(root, 60);
root = insertNode(root, 80);
// 中序遍历并打印节点值
std::cout << "中序遍历结果:";
inOrderTraversal(root);
std::cout << std::endl;
return 0;
}
在这个修复后的代码中,我们重新定义了一个名为root
的变量来存储BST的根节点。通过调用insertNode
函数,我们可以向BST中插入节点。最后,我们使用inOrderTraversal
函数对BST进行中序遍历,并打印节点值。
这个修复后的代码可以正常工作,并输出BST的中序遍历结果。这样,我们就解决了删除int后BST代码停止工作的问题。
腾讯云相关产品和产品介绍链接地址: