Найти Узел, Имеющий Ближайший К Этому Значению Ключ

Тема в разделе "Общие вопросы по С и С++", создана пользователем shilovec5377, 6 июн 2013.

  1. shilovec5377

    shilovec5377 Member

    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    всем привет.
    вот код, который ищет среднее значение всех ключей дерева, помогите найти узел, имеющий ближайший к этому значению ключ.
    Код (C++):
    #include<iostream.h>
    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 Vyvod (node **, int);
    void GetSum (node **);
    int sum,n;
    };

    void main ()
    {
    TREE A;
    int n;

    cout<<"vvedite kol vershin -...\n"; cin>>n;
    cout<<"vvedite klychi...\n";
    A.Tree (n,A.GetDuk()); A.Vyvod (A.GetDuk(),0);



    A.sum = 0;
    A.n = 0;
    A.GetSum(A.GetDuk());
    float srednee = (float)A.sum/A.n;

    cout<<"srednee = "<<srednee<<endl;
    }

    node *TREE::Tree (int n,node **p)
    // Построение идеально сбалансированного
    //        дерева с n вершинами.
    // *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 0;
    }

    void TREE::Vyvod (node **w,int l)
    // Изображение бинарного дерева, заданного
    // указателем *w на экране дисплея.
    {
    if (*w!=NULL)
    {
    Vyvod (&((**w).Right),l+1);
    for (int i=1; i<=l; i++) cout<<"  ";
    cout<<(**w).Key<<endl;
    Vyvod (&((**w).Left),l+1);
    }
    }
    void TREE::GetSum (node **w)
    {
    if (*w!=NULL)
    {
    GetSum (&((**w).Right));
    sum+=(**w).Key;
    n++;
    GetSum (&((**w).Left));
    }
    }
     
Загрузка...

Поделиться этой страницей