Вы можете легко сделать это с помощью рекурсии. Следующий код работает, потому что два непустых дерева имеют одинаковую форму тогда и только тогда, когда их соответствующие поддеревья имеют одинаковую форму.
boolean equalTrees(Node lhs, Node rhs)
{
// Empty trees are equal
if (lhs == null && rhs == null)
return true;
// Empty tree is not equal to a non-empty one
if ((lhs == null && rhs != null)
|| (lhs != null && rhs == null))
return false;
// otherwise check recursively
return equalTrees(lhs.left(), rhs.left())
&& equalTrees(lhs.right(), rhs.right())
}
Чтобы проверить два дерева, передайте их корневые узлы указанной выше функции.
equalTrees(tree1.root(), tree2.root())