История изменений
Исправление yoghurt, (текущая версия) :
static bool cmp(Tree* t1, Tree* t2) {
if (t1 && !t2) throw OOPS;
if (!t1 && t2) throw OOPS;
if (!t1 && !t2) return true;
if (t1->data != t2->data) throw OOPS;
return cmp(t1->left, t2->left) && cmp(t1->right, t2->right);
}
Разве нет? Если же вопрос в том, чтобы при этом не жрать стэк (каюсь, код в ОП пристально не смотрел), то рекурсию же можно смоделировать на куче.
Исправление yoghurt, :
static bool cmp(Tree* t1, Tree* t2) {
if (t1 && !t2) throw OOPS;
if (!t1 && t2) throw OOPS;
if (!t1 && !t2) return true;
if (t1->data != t2->data) {
throw OOPS;
}
return cmp(t1->left, t2->left) && cmp(t1->right, t2->right);
}
Разве нет? Если же вопрос в том, чтобы при этом не жрать стэк (каюсь, код в ОП пристально не смотрел), то рекурсию же можно смоделировать на куче.
Исходная версия yoghurt, :
KISS
static bool cmp(Tree* t1, Tree* t2) {
if (t1 && !t2) throw OOPS;
if (!t1 && t2) throw OOPS;
if (!t1 && !t2) return true;
if (t1->data != t2->data) {
throw OOPS;
}
return cmp(t1->left, t2->left) && cmp(t1->right && t2->right);
}
Разве нет? Если же вопрос в том, чтобы при этом не жрать стэк (каюсь, код в ОП пристально не смотрел), то рекурсию же можно смоделировать на куче.