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);
}