c++ - 英国夏令时。如何使用 C++ 使输出看起来像一棵树
问题描述
1
我正在尝试使用 C 语言创建一个 BST 树,更具体地用于我大学的练习。程序需要从输入文件中读取一些整数,对树进行一些操作,然后将新数字写入另一个文件(输出文件)。
我试过这样做,但我的输出结果不同
#include<iostream>
#include <fstream>
std::string fileName;
std::fstream readFile;
int storeFile;
using namespace std;
//Definition of Node for Binary search tree
struct BstNode {
int data;
BstNode* left;
BstNode* right;
};
void inorder(struct BstNode* root) {
if (root != NULL) {
// Traverse left
inorder(root->left);
// Traverse root
cout << root->data << " -> ";
// Traverse right
inorder(root->right);
}
}
void printTree(BstNode *root, string indent, bool last) {
if (root != nullptr) {
cout << indent;
if (last) {
cout << "R----";
indent += " ";
} else {
cout << "L----";
indent += "| ";
}
cout << root->data << endl;
printTree(root->left, indent, false);
printTree(root->right, indent, true);
}
}
// Function to create a new Node in heap
BstNode* GetNewNode(int data) {
BstNode* newNode = new BstNode();
newNode->data = data;
newNode->left = newNode->right = NULL;// set left and right chill equals to null
return newNode;// return address of new node
}
// To insert data in BST, returns address of root node
BstNode* Insert(BstNode* root,int data) {
if(root == NULL) { // empty tree
root = GetNewNode(data);
}
// if data to be inserted is lesser, insert in left subtree.
else if(data <= root->data) {
root->left = Insert(root->left,data);
}
// else, insert in right subtree.
else {
root->right = Insert(root->right,data);
}
return root;
}
int main() {
BstNode* root = NULL; // Creating an empty tree
//Code to test the logic/
string filename1_str = "bst_avl_8_input.txt";
fstream filename1;
filename1.open(filename1_str, ios::out);
filename1<<"1"<<endl;
filename1<<"2"<<endl;
filename1<<"3"<<endl;
filename1<<"4"<<endl;
filename1<<"5"<<endl;
filename1<<"6"<<endl;
filename1<<"7"<<endl;
filename1<<"8"<<endl;
filename1.close();
fileName = "bst_avl_8_input.txt";
readFile.open(fileName); //attempts to read the file
while(readFile >> storeFile){
if(readFile.bad()) {
std::cerr << "File failed to read " << std:: endl;
break; //loop terminates
} else {
root = Insert(root, storeFile);
}
}
printTree(root, "", true);
readFile.close();
}
解决方案
推荐阅读
- vue.js - Vue-Dropzone setOption 方法不起作用
- python - 如何计算列表中的总重复项并按名称对其进行排序
- json - 逻辑应用返回 JSON 字段(如果它不为空)
- php - 用户 24 小时按一次按钮?PHP MySql
- openid-connect - 以编程方式访问受 IBM APP ID 保护的资源
- php - 百分比折扣仅限于日期范围和 Woocommerce 中的订单计数
- jquery - 头部标签中的 jQuery 脚本存在问题
- python - 如何使用新格式打印大括号
- python - 从python中的SQS消息ID中删除单引号
- azure-functions - Azure Durable Functions going to sleep