leetcode 101 对称二叉树
思路
- 左右子树同时为空,为对称(true);
- 其中一个为空,为不对称(false);
- 左右值相同,对称(true)本层判断结束,深入到下一层;
- 一直递归,每一环节都满足上述 1 2 3 条件,则树对称;
题解
class Solution {
public:
bool isSymmetric(TreeNode* root) {
return ismirror(root->left, root->right);
}
bool ismirror(TreeNode* p, TreeNode* q){
// 都为NULL
if(!p && !q)
return true;
// 有一个为NULL
if(!p || !q)
return false;
// 左右值相等,进入下一层递归
if(p->val == q->val)
return ismirror(p->left, q->right) && ismirror(p->right, q->left);
return false;
}
};