Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
kidalv0001
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 9
#1

Упростить функцию поиска минимального листа

27.04.2017, 17:52. Просмотров 95. Ответов 4
Метки нет (Все метки)

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include<iostream>
using namespace std;
struct Tree
{
    float data;
    Tree *left;
    Tree *right;
};
Tree *BalanceTree(Tree *root,int n)
{
    if (n==0)
    {
        root=0;
        return root;
    }
        int nl=n/2;
        int nr=n-nl-1;
        Tree *p=new Tree;
        cin>>p->data;
        p->left=BalanceTree(p->left,nl);
        p->right=BalanceTree(p->right,nr);
        root=p;
        return root;
}
void Print(Tree *root,int l)
{
    if (root)
    {
        Print(root->left,l+5);
        for(int i=0;i<l;i++)
            cout<<" ";
        cout<<root->data<<endl;
        Print(root->right,l+5);
    }
}
 
 
float poisk(Tree *root)
{
  while (root)
  {
    if (root->left)
      root=root->left;
    else 
      if (root->right)
    root=root->right;
      else 
    return root->data;
  }
  
}
float minlist(Tree *root,float k)
 { 
    float a;
     a=k;
    if (root)
    {   
        k=minlist(root->left,k);
        if ((root->data<k) && (root->left==0) && (root->right==0))
           k=root->data;
    
        a=minlist(root->right,a);
        if ((root->data<a) && (root->left==0) && (root->right==0))
        a=root->data;
        if (a>k) return k; 
        else return a;
    }
 }
int main()
{
 
    Tree *A;
    int n;
    float 
    min,b;
    cout<<"Vvedite koli4estvo 4isel: ";
    cin>>n;
    A=BalanceTree(A,n);
    Print(A,n);
    cout<<endl;
    min=poisk(A);
    b=minlist(A,min);
    cout<<"MinList: "<<b;
    system("PAUSE");
    return 0;
}
Подскажите как можно упростить функцию minlist
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2017, 17:52
Ответы с готовыми решениями:

Написать функцию поиска максимального и минимального элементов одномерного массива
Не сочтите за наглость ребята, но заставили на старость лет учиться, вообше то...

Функция поиска минимального и максимального элемента массива и их передачи в вызывающую функцию
Дана целочисленная матрица размера 6x9. Определить функцию поиска значения и...

Написать функцию поиска минимального элемента списка по одному из выбранных полей
FindMin – функция поиска минимального элемента списка по одному из выбранных...

Поиск минимального листа дерева
привет всем, очень нужна ваша помощь, помогите пожалуйста. поиск минимального...

Поиск значения минимального листа дерева/ошибка
всем привет, такая проблема: в чем ошибка поиска значения минимального листа?...

4
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
27.04.2017, 17:57 #2
А что там упрощать? Покороче записать что ли?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
float minlist(Tree *root,float k)
 {
    if (!root)
        return;
 
    float a = k;
    k = minlist(root->left, k);
    if ((root->data<k) && (root->left==0) && (root->right==0))
           k = root->data;
   
    a = minlist(root->right, a);
    if ((root->data<a) && (root->left==0) && (root->right==0))
        a = root->data;
 
    return (a > k) ? k : a;
}
0
kidalv0001
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 9
27.04.2017, 18:03  [ТС] #3
Говорят, что слишком часто происходит проверка, что это лист и соответственно это можно упростить, но я не понимаю как это сделать.
0
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
27.04.2017, 18:08 #4
Цитата Сообщение от kidalv0001 Посмотреть сообщение
слишком часто происходит проверка, что это лист
И что это за проверка?
0
kidalv0001
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 9
27.04.2017, 18:11  [ТС] #5
((root->data<k) && (root->left==0) && (root->right==0)) вот эта
0
27.04.2017, 18:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2017, 18:11

Нужно отредактировать код поиска в некоторых папках. Добавить функцию поиска в архивах
Нашёл одну программку, работает отлично, но вот не идёт поиск в таких местах...

Создать функцию, сортирующую данную структуру, и функцию для поиска нужного значения в структуре
задание: Создать массив, элементами которого являются структуры – список...

Написать программу поиска вектора минимального по длине
Здравствуйте. Пожалуйста помогите решить данную задачу. Даны m векторов х1 =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru