[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
дерево
miffaДата: Вт, 28 Апр 2015, 20:57 | Сообщение # 1
Немного понимает логику
Группа: Модераторы
Сообщений: 18
Репутация: 0
Статус: Offline
создать дерево на 50 елементов. и обходим дерево и выводим елементы.
 
miffaДата: Чт, 30 Апр 2015, 13:34 | Сообщение # 2
Немного понимает логику
Группа: Модераторы
Сообщений: 18
Репутация: 0
Статус: Offline


Код
#include "stdafx.h"
#include <iostream>
#include<time.h>
#include<windows.h>

using namespace std;

struct Node{
    int x;
    Node* left;
    Node * right;
};

struct Tree{
    Node * root;
} Root;

Node* init(){
    Node*newNode = new Node;
    newNode->x = rand() % 10 + 1;
    newNode->left = newNode->right = NULL;
    return newNode;
}

void generete(){
    Node* current = new Node;
    current = Root.root;
    Node*newNode = new Node;
    newNode = init();
    while (true)
    {
       if (current->x > newNode->x){
          if (current->left == NULL){
             current->left = newNode;
             break;
          }
          else{
             current = current->left;
          }
       }
       else if (current->x <= newNode->x){
          if (current->right == NULL){
             current->right = newNode;
             break;
          }
          else{
             current = current->right;
          }
       }
       ///*else
       //   newNode = init();*/
    }
}

void prinT(Node* current){
    if (current != NULL){
       cout << "value =" << current->x << endl;
       prinT(current->left);
       prinT(current->right);
    }
}

int main()
{
    srand(time(NULL));
     
    Root.root = init();
    int n = 0;
    cin >> n;
    for (int i = 1; i < n - 1; i++){
       generete();
    }
    //Node* current = new Node;
    //current = Root.root;
    prinT(Root.root);
    system("pause");
    return 0;
}

/*подумати як зробити перебалансіровку дерева

*/
 
  • Страница 1 из 1
  • 1
Поиск: