Добавлено: 17 ноя 2004, 00:04
просто максимум из двух чисел:michael писал(а):VERSUS-а что это за метод max() втвоём втором коде?
например так:
Код: Выделить всё
int max(]
просто максимум из двух чисел:michael писал(а):VERSUS-а что это за метод max() втвоём втором коде?
Код: Выделить всё
int max(]
ну это функция обычная, просто мне в лом ее было писать %)michael писал(а):К сожалению литература молчит. Извини за мою тупость но что такое метод max() .кого я тут вызываю?
Код: Выделить всё
class daClass
{]
ну и позвать его соответственно:
daClass.max(lalala, blablabla);
in_order переписывается на Java аналогичным образом %)
[quote]
А насчет O(log2(n)+1) или O(log2(n+1)) или O(log2(n)) то вроде они все равны O(log2(n))
[/quote]
"O"-большое здесь не причем. Это для оценки сложности алгоритмов используется (в матане для оценки порядка функций). Мы же здесь говорим не про приблизительную оценку сверху, а про вполне определенное значение - высоту дерева. Все таки лучше поискать книжечку....
Код: Выделить всё
6
/
3
/ \
2 4
/
1
Код: Выделить всё
6
/ \
2 7
/ \
1 4
Код: Выделить всё
// вычисляем высоту дерева
int tree_height = eval_tree_height();
int in_order(const Node* t, int level)
{
int node_sum = 0;
level++;
if (t->left != NULL)
node_sum++;
if (t->right != NULL)
node_sum++;
switch(node_sum)
{
case 2: // нормальный узел с двумя потомками
return max(in_order(t->right, level), in_order(t->left, level));
case 1: // узел с одним потомком
return 1;
case 0: // дошли до узла, проверить равен ли текущий
// уровень высоте дерева
if (level != tree_height)
return 1;
else
return 0;
default:
printf("doh!");
}
}
Код: Выделить всё
in_order(tree, 0);
Код: Выделить всё
6, 7, 2, 1, 4
aka:
6
/ \
2 7
/ \
1 4
Код: Выделить всё
5, 7, 6, 9, 2, 1, 3
aka:
5
/ \
2 7
/ \ / \
1 3 6 9