题目描述
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false
提示:
- 树中节点数目在范围
[1, 1000]
内 -100 <= Node.val <= 100
思路分析
和相同二叉树是一个道理,但判断相同的不是两颗子树对应的左右结点,而是将两颗子树的左右结点交错进行判断,即左孩子与右孩子判断,右孩子和左孩子判断
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool check(struct TreeNode* q, struct TreeNode* p) {
if (q == NULL && p == NULL) {
return true;
}
if (q == NULL || p == NULL) {
return false;
}
if (q->val != p->val) {
return false;
}
return check(q->right, p->left) && check(q->left, p->right);//两子树左右孩子结点进行交错判断
}
bool isSymmetric(struct TreeNode* root) {
return check(root->left,root->right);
}