给你一个二叉树的根节点 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);
}