Бинарное дерево может быть закодирован с использованием двух функций l
и r
таким образом, что для node n
, l(n)
дать левую ребенка n
, r(n)
дать правильный ребенка n
.Самая короткая ветвь в двоичном дереве?
Ветвь дерева - это путь от корня до листа, длина ветки до определенного листа - это число дуги на пути от корня до этого листа.
Пусть MinBranch(l,r,x)
быть простой рекурсивный алгоритм для принимая бинарное дерево, кодируемый л и г функций вместе с корневым узлом х для двоичного дерева и возвращает длину самой короткой ветви двоичного дерева.
Дайте псевдокод для этого алгоритма.
ОК, так что в основном это то, что я придумал до сих пор:
MinBranch(l, r, x)
{
if x is None return 0
left_one = MinBranch(l, r, l(x))
right_one = MinBranch(l, r, r(x))
return {min (left_one),(right_one)}
}
Очевидно, что это не является большим или совершенным. Я был бы увлечен, если бы люди могли помочь мне получить это идеально и работать - любая помощь будет оценена по достоинству.
Я бы сказал, что ваша версия довольно хорошая, нечего добавить к ней. – Paulius
Кстати, вы также можете отредактировать свой вопрос со вчерашнего дня (http://stackoverflow.com/questions/1339043/...) ... таким образом вам не нужно снова перефразировать все. –
-1 для плохого названия, стирания вашего вопроса и просьбы к людям решить вашу проблему, а не просить намек на что-то конкретное, что вас превзошло – mpen