Сложность: easy
Дан корень бинарного дерева. Проверьте, является ли это дерево зеркальным отражением самого себя (то есть симметричным относительно своего центра).
Пример:
Input: root = [1,2,2,3,4,4,3] Output: true
👨💻 Алгоритм:
1⃣Дерево симметрично, если его левое и правое поддеревья являются зеркальным отражением друг друга.
2⃣Два дерева — зеркальные, если их корни равны и правое поддерево одного совпадает с левым другого.
3⃣Используйте рекурсию: сравните правое поддерево первого с левым поддеревом второго, и наоборот.
😎 Решение:
class Solution {
public:
bool isSymmetric(TreeNode* root) { return isMirror(root, root); }
bool isMirror(TreeNode* t1, TreeNode* t2) {
if (t1 == nullptr && t2 == nullptr) return true;
if (t1 == nullptr || t2 == nullptr) return false;
return (t1->val == t2->val) && isMirror(t1->right, t2->left) &&
isMirror(t1->left, t2->right);
}
};Ставь 👍 и забирай 📚 Базу знаний
