Тема: AVL-дерево.
Добрий вечір!
Будь ласка, допоможіте мені написати процедуру, яка буде знаходити кількість елементів дерева, що починаються із заданого символу і первірте, чи правильно я написав.
Завдання:
Написати програму, яка створює збалансоване бінарне дерево. Тип інформаційного поля int. Написати процедуру, яка знаходить кількість елементів дерева, що починаються із заданого символу.
Код:
#include "stdafx.h"
#include<iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
struct node
{
int Key;
int Count;
node *Left;
node *Right;
};
class TREE
{
private:
node *duk;
public:
TREE() { duk = NULL; }
node **GetDuk() { return &duk; }
node *Tree(int, node **);
void Output(node **, int, short int);
};
node *TREE::Tree(int n, node **p)
{
node *now;
int x, nl, nr;
now = *p;
if (n == 0) *p = NULL;
else
{
nl = n / 2;
nr = n - nl - 1;
cin >> x;
now = new(node);
(*now).Key = x;
Tree(nl, &((*now).Left));
Tree(nr, &((*now).Right));
*p = now;
return *p;
}
}
void TREE::Output(node **w, int l, short int x)
{
if (*w != NULL)
{
Output(&((**w).Right), l + 1, 0);
for (int i = 1; i <= l; i++) cout << " ";
if (x == 0) cout << "/";
if (x == 1) cout << "";
cout << (**w).Key << endl;
Output(&((**w).Left), l + 1, 1);
}
}
int main()
{
TREE A;
int n;
cout << "Number of tree elements - "; cin >> n;
cout << "Enter the key\n";
A.Tree(n, A.GetDuk());
A.Output(A.GetDuk(), 0, 5);
A.Output(A.GetDuk(), 0, 5);
system("pause");
}
За допомогу зможу оплатити через ПриватБанк.