题目链接:LC 101. 对称二叉树
2020.10.11第一次解答:
一开始想着直接检验中序序列,提交后发现这个算法存在bug,它无法正确判断某些并不是对称二叉树的测试用例。
参考题解后大概get了思路。只需要用递归依次判断当前结点的左子树和右子树是否对称即可。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isMirror(TreeNode* left, TreeNode* right) {
if (left == nullptr && right == nullptr) return true;
else if (left == nullptr || right == nullptr || left->val != right->val) return false;
return isMirror(left->left, right->right) && isMirror(left->right, right->left);
}
bool isSymmetric(TreeNode* root) {
if (root == nullptr) return true;
return isMirror(root->left, root->right);
}
};