доброе время суток всем!
помогите пожалуста с небольшим вопросом.
в программе делала копию дерева все получилось, атеперь нужно удалить минимальный лист, т.е. как я понимаю это самы левый нижний (дерево поиска),
poisk (tree**r tree**pr)
{ if(r)
{pr=r;
poisk (tre–>left; &pr)…
дальше не получается, т.к он не запоминает значение предыдущего элемента… как быть…
заранее спасибо за помощь=)
26 октября 2008 в 19:02
Леонид, боюсь, вас здесь не поймут. Просто выполните среднюю оценку показателя ASCII(49h) ASCII(51h) по той части дискуссии что до вашего поста.
25 октября 2008 в 2:03
а для меня загадкой является вот эта строчка:
poisk (tre–>left; &pr)…
что она означает?
кстати, если дерево у вас не самобалансирующееся, то для его обхода постарайтесь обойтись без рекурсии.
24 октября 2008 в 19:02
двойной указатель, чтобы можно было не только данные по значению указателя менять, но и сам указатель.
24 октября 2008 в 17:03
или так:
poisk (tree* r, tree* pr)
{
if (r->left) { poisk(r->left, r); } else { а тут выводим на экран, что мы наткнулись на элемент r, но у него нет левого =)}
}
24 октября 2008 в 17:02
если r и pr уже являются указателями тогда:
poisk (tree* r, tree* pr)
{
if (r) { poisk(r->left, r); }
}
так как для каждого следующего вызова предыдущим значением будет текущий, то и в качестве предыдущего в вызов поиска передаем текущий, то есть r
что не так то?
24 октября 2008 в 16:02
Ну так сохраняйте значение предыдущего элемента – в чем проблема то?
24 октября 2008 в 16:01
это что-то типа указателя на указатель дерева ( честно, масло масленое)…
pr- предыдущий элемент
r- последний..
последняя строчка с опечаткой * poisk (tree–>left; &pr)…
24 октября 2008 в 15:05
а чо за двойной указатель: (**) ? я такого не знаю. думал пишут
poisk (tree* r, tree* pr)
только что тут что? pr – это предыдущий что ли?