Один быстрый и грязный подход может состоять в том, чтобы определить каноническую сериализацию для деревьев, а затем сравнить их.
Самый простой подход - это JSON.stringify для каждого дерева. Вам нужно реализовать пользовательский метод toJSON
для TreeNode
.
class TreeNode {
constructor(data, left=null, right=null) {
this.data = data;
this.left = left;
this.right = right;
}
toJSON() {
return JSON.stringify({ data: this.data, left: this.left, right: this.right });
}
}
Тогда binaryTreeCompare
становится тривиальным.
РЕДАКТИРОВАТЬ: как только вы определили пользовательский метод toJSON
для TreeNode
, тогда binaryTreeCompare
станет следующим:
function binaryTreeCompare(a, b) {
return JSON.stringify(a) === JSON.stringify(b)
}
Однако сообщаемое вами сообщение об ошибке не имеет ничего общего с вашим алгоритмом. Трудно точно понять, в чем проблема, потому что сообщение об ошибке ссылается на то, чего нет в вашем примере кода. Я подозреваю, что ваш реальный код отличается от кода, который вы опубликовали, таким образом, что имеет решающее значение для проблемы.