Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Деревья


Автор: Vovdarinka 22.4.2013, 17:02
Напишите программу вычисления высоты дерева с использованием представления дерева с использованием списка сыновей.

Автор: baldina 22.4.2013, 17:18
Код

#include <iostream>
#include <algorithm>
#include <list>

struct tree {
 std::list<tree> children;
};

size_t tree_height (const tree& root, size_t deep=0) {
  std::for_each (root.children.begin(), root.children.end(),[&](const tree& node){
    deep = std::max(deep,tree_height(node,deep+1));
  });
  return deep;
};

int main () {
  tree my_tree;
  tree my_inner_node;
  tree my_leaf;
  my_inner_node.children.push_back (my_leaf);
  my_tree.children.push_back (my_inner_node);
  std::cout << "tree height is " << tree_height (my_tree);
}

Автор: Vovdarinka 22.4.2013, 19:14
спасибо,сейчас смотрю)считает,что высота дерева 2,а откуда такие данные?)))

Автор: baldina 22.4.2013, 19:45
у корня один исходящий узел, у того - еще один. итого - 2 шага для достижения самого далекого листа

Добавлено через 3 минуты и 41 секунду
высота - это длина пути. если дерево пустое, либо состоит из одного корня, его высота 0.

Автор: Vovdarinka 22.4.2013, 20:00
это я понимаю,а где это задаётся?и как это можно поменять??

Автор: Earnest 23.4.2013, 05:48
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)