Другие языки программирования и технологии
Как создать бинарное дерево в c++ новичку(т.е. мне)???!Помогите плз!
дайте плз какую нибудь инфу по этому поводу, сам везде облазил просмотрел дофига всего - ниче не понял(( или киньте код проги, в которой тупо создано бинарное дерево... очень нужно! так вообще знаю только основы(операторы, функции, структуры, указатели)...
Ну, например, так
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<conio.h>
#include <clx.h>
#pragma hdrstop
//---------------------------------------------------------------------------
class tree
{ public:
int data;
tree *pl;
tree *pr;
void show();
void add(int d,bool f);
} ;
int e=0;
#pragma argsused

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<conio.h>
#include <clx.h>
#pragma hdrstop
//---------------------------------------------------------------------------
class tree
{ public:
int data;
tree *pl;
tree *pr;
void show();
void add(int d,bool f);
} ;
int e=0;
#pragma argsused


struct TreeNode // Узел дерева
{
int Key; // Ключ
TreeNode* pLlink; // Левое дочернее дерево (или NULL, если оно пустое)
TreeNode* pRlink; // Правое дочернее дерево (или NULL, если оно пустое)
};
/*
Добаваляется новый узел следующим образом. Начинается с корня. Сравнивается Ключ вставляемого узла с Ключом этого узла
Если он меньше, то идем в левое дочернее дерево, если оно не пусто, или вставляем на его место, если оно пусто.
Если он больше, то идем в правое дочернее дерево, если оно не пусто, или вставляем на его место, если оно пусто.
/**/
BOOL AddNode(TreeNode *&pRoot, int Key)
{
if (pRoot)
{
if (Key < pRoot->Key)
{
return AddNode(pRoot->pLlink, Key);
}
else if (Key > pRoot->Key)
{
return AddNode(pRoot->pRlink, Key);
}
else
{
return FALSE; // УЗЕЛ С ТАКИМ КЛЮЧОМ УЖЕ ЕСТЬ
}
}
else
{
pRoot = new TreeNode;
pRoot->Key = Key;
pRoot->pLlink = NULL;
pRoot->pRlink = NULL;
}
return TRUE;
}
void DeleteTree(TreeNode *pRoot)
{
if (pRoot)
{
DeleteTree(pRoot->pLlink);
DeleteTree(pRoot->pRlink);
delete pRoot;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0, "russian");
TreeNode *pRoot = NULL; // корень дерева
for (int i = 0; i < 20; i++)
{
int key = rand();
printf("%s ключ %d\n", AddNode(pRoot, key) ? "Добавлен" : "Не добавлен", key);
}
DeleteTree(pRoot);
return 0;
}
{
int Key; // Ключ
TreeNode* pLlink; // Левое дочернее дерево (или NULL, если оно пустое)
TreeNode* pRlink; // Правое дочернее дерево (или NULL, если оно пустое)
};
/*
Добаваляется новый узел следующим образом. Начинается с корня. Сравнивается Ключ вставляемого узла с Ключом этого узла
Если он меньше, то идем в левое дочернее дерево, если оно не пусто, или вставляем на его место, если оно пусто.
Если он больше, то идем в правое дочернее дерево, если оно не пусто, или вставляем на его место, если оно пусто.
/**/
BOOL AddNode(TreeNode *&pRoot, int Key)
{
if (pRoot)
{
if (Key < pRoot->Key)
{
return AddNode(pRoot->pLlink, Key);
}
else if (Key > pRoot->Key)
{
return AddNode(pRoot->pRlink, Key);
}
else
{
return FALSE; // УЗЕЛ С ТАКИМ КЛЮЧОМ УЖЕ ЕСТЬ
}
}
else
{
pRoot = new TreeNode;
pRoot->Key = Key;
pRoot->pLlink = NULL;
pRoot->pRlink = NULL;
}
return TRUE;
}
void DeleteTree(TreeNode *pRoot)
{
if (pRoot)
{
DeleteTree(pRoot->pLlink);
DeleteTree(pRoot->pRlink);
delete pRoot;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0, "russian");
TreeNode *pRoot = NULL; // корень дерева
for (int i = 0; i < 20; i++)
{
int key = rand();
printf("%s ключ %d\n", AddNode(pRoot, key) ? "Добавлен" : "Не добавлен", key);
}
DeleteTree(pRoot);
return 0;
}
citforum.ru, msdn.com, codeguru.com )))
Похожие вопросы
- Бинарные деревья в алгоритме поиска слов
- Построение бинарного дерева (С/С++)
- как построить бинарное дерево
- dev c++. помогите плз сделать задачу найти наибольшую высоту треугольника из сторонами a,b,c
- В какой книжке про С++ можно почитать о таких вещах, как структуры, бинарные деревья, красно-черные деревья? подскажите
- Я в 8-ом классе,хочу после девятого пойти на программиста,т.е изучить c++,pascal,delphi и т д
- На каком "движке" лучше создать сайт? типа Джумла, ВордПресс и т.д.? Сайт-инфо портал + несколько файлов. Для новичков
- Создать список работников предприятия C++
- Как создать программу на языке c++
- Задачка по С++. Помогите плз