给你一个二叉树的根节点 root 检查它是否轴对称
输入:root = [1,2,2,3,4,4,3]
输出:true
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
对称二叉树定义: 对于树中 任意两个对称节点 L 和 R ,一定有:
L.val = R.val :即此两对称节点值相等。
L.left.val = R.right.val :即 LLL 的 左子节点 和 RRR 的 右子节点 对称。
L.right.val = R.left.val :即 LLL 的 右子节点 和 RRR 的 左子节点 对称。
根据以上规律,考虑从顶至底递归,判断每对左右节点是否对称,从而判断树是否为对称二叉树
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool check(struct TreeNode*p,struct TreeNode*q)
{
if(p ==NULL && q == NULL)
{
return true;
}
else if(p == NULL || q == NULL)
{
return false;
}
else if(p->val == q->val)
{
return check(p->left,q->right) && check(p->right,q->left);
}
else{
return false;
}
}
bool isSymmetric(struct TreeNode* root){
return check(root,root);
}