28 / 23 / 13
Регистрация: 08.12.2012
Сообщений: 611
1

Подсчитать сумму значений в бинарном дереве

01.12.2014, 15:56. Показов 595. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написал функцию подсчитывающую сумму значений
в бинарном дереве , прога работает и дает верный
результат, но смущает то ,что для суммирования
значений в дереве нужна еще одна ячейка для флага(тип boolean)
показывающий просмотрена или нет ячейка,иначе значения в
ячейках дерева считаются по 2-3 раза
ни на форуме ни в гугле не нашел решения подобной задачи(мож плохо искал)
Может быть кого заинтересует эта тема и есть варианты более удобоваримые
чем здесь представленный , не соблаговолите ли поделиться...
Pascal
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
  Type
       Pt = ^Node;
       Node = record
         inf: integer;//значения которые будем складывать
         num: boolean;// флаг ,false - ячейка не просмотрена,true - ячейка просмотрена
         prav, lev: Pt;// правая и левая ветки
      end;{End Node}
     Var Root: Pt;// корневище дерева 
 // ЗДЕСЬ ОПУСКАЮ ПРОЦЕДУРУ ЗАПОЛНЕНИЯ БИНАРНОГО ДЕРЕВА
   Function Sum(Root: Pt;var s: integer): integer;
     begin
        if Root <> nil then
                  begin
          if Root^.num = 0 then begin //если ячейка не просмотрена (Root^.num=0)
            s:= s + Root^.int;  //тогда суммируем ее значение к переменной s
            Root^.num:= True;  //а ячейке num вместо 0 присваиваем 1 
          end;{End if ..= 0}
           Sum(Root^.prav,s);
           Sum(Root^.lev,s);
        end;{End if .. <> nil}
           Sum:= s;
     end;{End Sum}
   var s: integer;
{********** ОСНОВНОЕ ТУЛОВИЩЕ ПРОГРАММНОЕ ************}
 BEGIN ClrScr;
   Root:= nil;
   Zapolnenie;//процедура заполнения дерева - опущена
   s:= 0;//инициируем значение начальной суммы 0
  Writeln('Сумма значений в бинарном дуболомище = ',Sum(Root,s));
 end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2014, 15:56
Ответы с готовыми решениями:

Подсчитать количество элементов в бинарном дереве
Здравствуйте. Такая проблема. Есть код для примера: Procedure Search (P,N) IF P-&gt;Key = N THEN...

В бинарном дереве подсчитать число его листов
В бинарном дереве подсчитать число его листов и напечатать их значения: при прямом обходидерева.

Подсчитать количество узлов с четными ключами в бинарном дереве
Сделала так: struct Item { int key; char* string; Item* left; Item* right; }; __________...

Поиск максимального суммы значений в бинарном дереве
Есть бинарное дерево, нужно найти максимальную сумму значений в нем. Используя при этом только лишь...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32793 / 21133 / 8144
Регистрация: 22.10.2011
Сообщений: 36,393
Записей в блоге: 8
01.12.2014, 16:31 2
На кой там ячейка?
Pascal
1
2
3
4
5
function sum(root : Pt) : integer;
begin
  if root = nil then sum := 0
  else sum := root^.inf + sum(root^.prav) + sum(root^.lev);
end;
1
01.12.2014, 16:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2014, 16:31
Помогаю со студенческими работами здесь

Найти сумму листьев в бинарном дереве поиска
Дано бинарное дерево поиска(ключи-целые числа).Найти сумму листьев. Вот мой код.Но он не...

Подсчитать среднее арифметическое значений узлов в идеально сбалансированном дереве
В файле input.txt хранится последовательность целых чисел. По входной последовательности...

Разобраться в бинарном дереве
Нашел вот такой вариант построения бинарного дерева. Просьба прокомментировать строки кода...

Предок в бинарном дереве
Помогите пожалуйста! Необходимо написать программу, которая для двух вершин дерева определяет,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru