02.12.2012, 12:42. Просмотров 436. Ответов 0
По задаче:
нужно определить, есть ли в дереве хотя бы 2 одинаковых элемента. Если есть - вывести "да", нет - "нет".
создаю дерево и вывожу на экран, кто-то может по-другому создаст
подскажите, как осуществить поиск одинаковых элементов?
как каждую вершину сравнить с каждой, или, быть может, есть другой вариант.
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| #include <iostream>
struct Node {
int key;
Node *left, *right;
};
typedef Node *PNode;
PNode MakeTree (int data[], int from, int n)
{
PNode Tree;
int n1, n2;
if (n==0)
return NULL; //îãðГ*Г*ГЁГ·ГҐГ*ГЁГҐ ðåêóðñèè
Tree=new Node; //âûäåëèòü ГЇГ*ìÿòü ïîä âåðøèГ*Гі
Tree->key=data[from]; //Г§Г*ГЇГЁГ±Г*ГІГј Г¤Г*Г*Г*ûå (êëþ÷)
n1=n/2;
n2=n-n1-1;
Tree->left=MakeTree(data, from+1, n1);
Tree->right=MakeTree(data, from+1+n1, n2);
return Tree;
}
void Print(PNode Tree)
{
if (! Tree) return;
std::cout << Tree->key << std::endl;
Print(Tree->left);
Print(Tree->right);
}
main()
{
int n, data[]={1, 4, 3, 3, 7 , 9, 8, 10};
PNode Tree;
n=sizeof(data)/sizeof(int);
Tree=MakeTree(data, 0, n);
Print(Tree);
system("pause");
} |
|