101. 对称二叉树
题目
传送门:https://leetcode.cn/problems/symmetric-tree/
算法设计:深度优先搜索
二叉树原问题 = 根节点 + 左右子树的子问题
俩棵子树是否对称 = 当前节点相同 + 左右子树相同
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if (root == NULL) return true;
return dfs(root->left, root->right); // 检查两棵子树是否对称
}
bool dfs(TreeNode* left, TreeNode* right) {
if (left == NULL || right == NULL) return left == right; // 俩个节点都为空,则true;只有一个空,则false
if (left->val != right->val) return false; // 左右节点值不同,则false
return dfs(left->right, right->left) && dfs(left->left, right->right); // 左右子树也需要镜像对称
}
};