//
// Created by 423A35C7 on 2023-11-12.
//
// 14:55
// 16:57

#include "view.cpp"

int main() {
    // 创建二叉树
    BiTree bi_tree;
    // 父节点编号
    int parent = 0;
    // 子节点队列
    std::queue<std::string> 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;
}