Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 11:23   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию Поиск суммы элементов дерева

Добрый день. Есть такая задача используя потоки вычислить сумму элементов бинарного дерева. Так как реализовать надо на с++ возникли проблемы. Я написала эту прогу на Pascal, пока без использования потоков, в их использовании сложностей нет. Но вот как это теперь перевести на c++? Помогите пожалуйста с переводом
ВОт прога
Код:
program sum_tree;
        type ref_node=^node;
        node =record
             inf:integer;
             left,rigth:ref_node;
        end;
var
   root:ref_node;
   i:integer;
   res:integer;
   sum:integer;
   
procedure insert_node(var root:ref_node;x:integer);
begin
     if root=nil then
     begin
          new(root);
          root^.inf:=x;
          root^.left:=nil;
          root^.rigth:=nil;
     end
     else if x<root^.inf then insert_node(root^.left,x)
     else insert_node(root^.rigth,x);
end;

procedure search(root:ref_node);
begin
     if root<>nil then
     begin
          write(root^.inf,' ');
          search(root^.left);
          search(root^.rigth);
     end;
end;
   
procedure summ(root:ref_node;var sum:integer);
begin
     if root<>nil then
     begin
          sum:=sum+root^.inf;
          summ(root^.left,sum);
          summ(root^.rigth,sum);
     end;
end;
   
begin
     for i:=1 to 6 do
         insert_node(root,i);
     search(root);
     sum:=0;
     summ(root,sum);
     writeln;
     write(sum);
end.
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 07.03.2010, 16:12   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Visual C++
Код:
#include "stdafx.h"
#include <iostream>

using namespace std;

struct node {
	int inf;
	node *left, *right;
};

void insert_node(node * &root, int x) {
	if (root == NULL) {
		root = new node;
		root->inf = x;
		root->left = NULL;
		root->right = NULL;
	}
	else if (x < root->inf)  insert_node(root->left, x);
	else insert_node(root->right, x); 
}

void search(node *root) {
	if (root != NULL) {
		cout << root->inf << " ";
		search(root->left);
		search(root->right);
	}
}

void summ(node *root, int &sum) {
	if (root != NULL) {
		sum += root->inf;
		summ(root->left, sum);
		summ(root->right, sum);
	}
}

int _tmain(int argc, _TCHAR* argv[])
{	
	node *root = NULL;
	int sum = 0;
	for (int i = 1; i <= 6; i++) insert_node(root, i);
	search(root);
	summ(root, sum);
	cout << endl << sum;
	return 0;
}
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
максимум суммы трех последовательных элементов. Siluet Помощь студентам 3 27.12.2009 22:15
Матрица суммы элементов Smileonl Помощь студентам 3 13.12.2009 17:33
Нахождение в массиве максимальной суммы элементов byte916 Microsoft Office Excel 1 07.10.2009 13:03
Максимум суммы 2 элементов Siluet Общие вопросы Delphi 15 27.09.2009 00:20
Найти отношения суммы элементов главной диагонали и суммы элементов побочной диагонали квадратной матрицы Elmander Помощь студентам 2 21.06.2007 07:15