Я немного запутался, пытаясь распечатать двоичное дерево, как показано ниже, в C++:
8
/ \
/ \
/ \
5 10
/ \ / \
2 6 9 11
< /code>
Я знаю, как получить высоту дерева и количество узлов на каждом уровне, но я не мог понять, как установить правильное количество пробелов между Корень и второй уровень (есть 3 строки под корнем для 3 уровней, но я считаю, что это не каждый раз, я думал, что это может быть в 3 раза выше высоты для больших деревьев). < /p>
Я хотел бы получить некоторую помощь, чтобы распечатать эти пространства в рядах и количество строк между рядами. Спасибо. < /p>
Я кодирую в c ++ < /p>
Get height
int tree::getHeight(No *node) {
if (node == NULL) return 0;
return 1 + max(getHeight(node->esq), getHeight(node->dir));
}
Get number of nodes per line
void tree::getLine(const No *root, int depth, vector& vals){
int placeholder = 10;
if (depth chave);
return;
}
if (root->esq != nullptr)
getLine(root->esq, depth-1, vals);
else if (depth-1 dir != nullptr)
getLine(root->dir, depth-1, vals);
else if (depth-1
Подробнее здесь: https://stackoverflow.com/questions/368 ... ay-using-c