Отладка программы на С++
Написать программу на С++.
Дано бинарное дерево(заполняется с клавиатуры или из файла). Вывести значения всех вершин дерева в порядке обхода в ширину: вначале выводится корень, затем его потомки(слева направо), далее потомки второго уровня и тд. Не могу правильно сделать обход(( #include <iostream> using namespace std; struct node { int data; int lvl; node *right, *left; }; void Show(node *&MyTree) { if (MyTree != NULL) { if (MyTree->lvl == 0) cout « MyTree->data « endl; else { Show(MyTree->left); Show(MyTree->right); cout « endl; } } } void Create(int MyData, node *&MyTree, int level) { if (MyTree == NULL) { MyTree = new node; MyTree->data = MyData; MyTree->right = MyTree->left = NULL; MyTree->lvl = level; } if (MyTree->left != NULL) Create(MyData, MyTree->left, level+1); else { MyTree->left = new node; MyTree->left->left = MyTree->left->right = NULL; MyTree->left->data = MyData; MyTree->left->lvl = level; } if (MyTree->right != NULL) Create(MyData, MyTree->right, level + 1); else { MyTree->right = new node; MyTree->right->left = MyTree->right->right = NULL; MyTree->right->data = MyData; MyTree->right->lvl = level; } } void Del(node *&MyTree) { if (MyTree != NULL) { Del(MyTree->left); Del(MyTree->right); delete MyTree; } } int main() { setlocale(LC_ALL, "rus"); node *Tree = NULL; int *massiv, n; cout « "Количество элементов:\t"; cin » n; massiv = new int[n]; cout « "Введите элементы дерева:\n"; for (int i = 0; i < n; i++) { cin » massiv[i]; Create(massiv[i], Tree, 0); } system("cls"); cout « "Дерево в порядке обхода в ширину:\n"; Show(Tree); Del(Tree); delete[] massiv; system("pause"); system("cls"); return 0; }
|
Часовой пояс GMT +4, время: 23:47. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.