2013-12-02 2 views
0

Как проверить длину следующей строки, не извлекая ее из cin?Выберите следующую строку из cin

У меня есть входные данные в следующем виде:

A 
-B 
--* 
--C 
-D 
--E 
---* 
---F 
0 

И у меня есть рекурсивная функция, чтобы построить дерево от него.

TreeNode* BuildTree() { 
    string line; 
    getline(cin, line); 
    char id = line[line.size() - 1]; 
    if (id == '0') return NULL; 
    TreeNode* n = (id == '*') ? NULL : new TreeNode(id, NULL, NULL); 
    if (/* This line's size less than next line's size */) { 
    n->left = BuildTree(); 
    n->right = BuildTree(); 
    } 
    return n; 
} 

ответ

3

Напишите ваш код, чтобы вы были на одной линии впереди. Тогда ваш Условный оператор становится:

if (/* this line's size is greater than the previous line's size */) { 
    .... 
} 

Попеременно, если вы можете позволить себе память (и, вероятно, вы можете), чавкать весь файл в vector<string>, а затем рекурсию на что.

Смежные вопросы