Я пытаюсь сравнить форму (по форме, я имею в виду форму двоичного дерева) одного SortedSet по определенному индексу List of SortedSets со всеми остальными SortedSets в том же List. Я пытался найти способы сравнить двоичные деревья, но не знаю, как это сделать с помощью SortedSets. (Рекурсия меня тоже сбивает с толку!)
//Checks shape of the trees
public static bool compareShape(List<SortedSet<int>> trees, SortedSet<int> currentTree)
{
//COMPARE SHAPE WITH REST OF LIST
for (int i = 0; i < trees.Count(); i++)
{
// Empty trees are equal
if (trees[i] == null && currentTree == null)
{
return true;
}
// Empty tree is not equal to a non-empty one
if ((trees[i] == null && currentTree != null) || (trees[i] != null && currentTree == null))
{
return false;
}
// otherwise check recursively
return compareShape(trees[i].left(), currentTree.left()) && compareShape(trees[i].right(), currentTree.right());
}
}
}
Код внутри цикла for основан на этом другом вопрос о сравнении двоичных деревьев. Извините, если это сложно понять. Буду признателен за любую помощь, которую я могу получить.