Внимание! За два урока 16.04.2009 Вы получите две оценки!- [0] function node(data : TData; left, right : PTreeNode) : PTreeNode;
- создает новую вершину дерева со значениями data, left и right
- [0] procedure print(n : PTreeNode);
- распечатывает дерево в виде скобочной последовательности
- [0.5] function sum(n : PTreeNode) : Integer;
- возвращает сумму значений во всех вершинах дерева
- [0.5] function countX(n : PTreeNode; x : TData) : Integer;
- возвращает количество вершин в дереве со значением x
- [0.5] procedure clear(var n : PTreeNode);
- удаляет из дерева все вершины (очищает память)
- [1] function sumPath(n : PTreeNode; path : String) : Integer;
- path -- строка, состоящая из символов 'L' и 'R', например 'LLRRL'
- эта строка означает путь в дереве (L -- перейти к левому сыну, R -- к правому)
- пустая строка -- путь состоит из одной вершины (n)
- 'L' -- путь (n, n^.left)
- 'RL' -- путь (n, n^.right, n^.right^.left)
- функция возвращает сумму значений всех вершин в данном пути
- [0.5] procedure replace(n : PTreeNode; x, y : TData);
- во все вершины со значением x записывает y
- [1] function countLeaves(n : PTreeNode) : Integer;
- возвращает количество листьев в дереве (то есть веришн, у которых нет детей)
- [1] function min(n : PTreeNode) : TData;
- возвращает минимальное значение в дереве
- [0.5] function size(n : PTreeNode) : Integer;
- возвращает количество вершин в дереве
- [1] function countLevel(n : PTreeNode; d : Integer) : Integer;
- возвращает количество вершин на глубине d (n находится на глубине 0, ее дети -- на глубине 1 и т. д.)
- [1.5] function isFull(n : PTreeNode) : Boolean;
- возвращает true, если и только если дерево является полным, то есть в нем все уровни заполнены целиком
- пустое дерево не считается является полным :)
- [1] function height(n : PTreeNode) : Integer;
- возвращает высоту дерева
- высота пустого дерева равна нулю
- высота непустого дерева -- это количество вершин в самом длинном пути от корня до листа,
то есть количество уровней в дереве
- [1] procedure printInfix(n : PTreeNode);
- Распечатать дерево в инфиксной форме:
- пустое дерево: nil
- непустое: (left data right)
- Пример: ((nil 5 nil) 9 ((nil 3 nil) 0 nil))
- [2] procedure printNodes(n : PTreeNode, <можно придумать свои дополнительные параметры>);
- распечатать дерево в виде вызова функции node (c отступами)
- Пример:
node(9, node(6, node(1, nil, nil), nil ), node(5, nil, node(3, nil, nil) ) )
- [1] procedure printLevel(n : PTreeNode; level : Integer);
- Распечатать уровень дерева номер level (считая с нуля), то есть вывести значения вершин этого уровня слева направо в строчку
- [1] function checkOrder(n : PTreeNode) : Boolean
- возвращает true тогда и только тогда, когда для всех вершин в дереве выполняется следующее условие:
- значение каждой вершины в левом поддереве (если они есть) меньше либо равно значению самой вершины,
а значение каждой вершины в правом поддереве (если они есть) -- больше значения самой вершины
- в частности, для пустого дерева функция возвращает true
- [1] procedure addOrdered(var n : PTreeNode; x : TData);
- гарантируется, что дерево n упорядочено (checkOrder(n) = true), в частности, оно может быть пусто
- добавить x в дерево так, чтобы оно осталось упорядоченным
- [1] procedure printSorted(n : PTreeNode);
- гарантируется, что дерево n упорядочено (checkOrder(n) = true)
- вывести все его элементы в строчку, в порядке убывания
- [3] procedure sort(var a : TArray);
- a -- одномерный массив элементов типа TData
- отсортировать массив, используя упорядоченные деревья
- никакие ранее изучавшиеся алгоритмы сортировки применять нельзя
|
|