// // Created by 423A35C7 on 2023-11-12. // // 14:55 // 16:57 #include "view.cpp" int main() { // 创建二叉树 BiTree bi_tree; // 父节点编号 int parent = 0; // 子节点队列 std::queue children; // 文本 std::string text; // 文本长度 text.reserve(100); // 临时变量 int temp; // 错误信息 std::string error_message; // 重新输入 next_input: // 清屏 clear_screen(); // 输出二叉树 output(bi_tree.head, 1, 1); // 移动光标到指定位置 moveto(100, 1); // 输出提示信息 std::cout << error_message << std::endl << "输入整数编号和字符串文本,空格分隔,输入单个非数字字符表示结束:" << std::endl;; // 循环输入 while (std::cin >> parent) { // 如果编号不存在 if (parent >= bi_tree.length) { // 设置错误信息 error_message = "输入的编号不存在,请重新输入:"; // 忽略输入 std::cin.ignore(1024, '\n'); // 重新输入 goto next_input; } // 循环输入 while ((temp = std::cin.get()) > 0) { // 根据输入的值进行判断 switch (temp) { // 换行符 case '\n': // 如果文本不为空 if (!text.empty()) { // 将文本添加到子节点队列中 children.push(text); // 清空文本 text.clear(); } // 将父节点编号和子节点队列插入二叉树 bi_tree.insert(parent, children); // 重新输入 goto next_input; // 空格 case ' ': // 如果文本不为空 if (!text.empty()) { // 将文本添加到子节点队列中 children.push(text); // 清空文本 text.clear(); } break; // 其他字符 default: // 将字符添加到文本中 text.push_back(temp); break; } } } // 添加节点 // children.emplace("张三"); // children.emplace("李四"); // children.emplace("王五"); // bi_tree.insert(parent, children); // parent = 2; // children.emplace("师大"); // children.emplace("统计"); // children.emplace("计算机"); // bi_tree.insert(parent, children); // parent = 0; // children.emplace("赵六"); // bi_tree.insert(parent, children); return 0; }