Leetcode 101. 对称二叉树
思路
递归:
- 确定终止条件
如果两个子树都为空,返回true
如果只有一个子树为空,返回false
如果都不为空,且不相等,返回false - 单层递归的逻辑
比较左子树的左子树与右子树的右子树
比较左子树的右子树与右子树的左子树
若不等返回false,若相等返回true
代码
bool check(TreeNode* l, TreeNode* r){
if(!l && !r) return true;
else if(!l || !r) return false;
else if(l->val != r->val) return false;
else return check(l->left,r->right) && check(r->left,l->right);
}
bool isSymmetric(TreeNode* root) {
if(!root) return true;
else return check(root->left,root->right);
}
总结
要记住递归三个步骤。