1

Тема: 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");
}

За допомогу зможу оплатити через ПриватБанк.