mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include namespace Ui { class MainWindow; } struct item; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void print (QTreeWidgetItem * branch, item * p); private slots: void on_actionRun_triggered(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } struct item { int key; item* left; item* right; }; item* root=0; item* search(int k){ item* p=root; while (p!=NULL) { if (k < p->key) p = p->left; else if(k > p->key) p = p->right; else return p; } return p; } void enter (item * & p, int k){ if (p==NULL) { item * u = new item; u->key = k; u->left = NULL; u->right = NULL; p = u; } else if (k < p->key) enter (p->left, k); else if (k > p->key) enter (p->right, k); } void insert (int k) { enter (root, k); } void MainWindow::print (QTreeWidgetItem * branch, item * p) { if (p != NULL) { QTreeWidgetItem * u = new QTreeWidgetItem; u->setText (0, QString::number (p->key)); if (branch == NULL) ui->treeWidget->addTopLevelItem (u); else branch->addChild(u); print (u, p->left); print (u, p->right); } } void MainWindow::on_actionRun_triggered() { insert (7); insert (5); insert (10); insert (1); insert (6); insert (42); insert (17); insert (27); insert (37); print (NULL, root); }