一、题目描述
给你一个二叉树的根节点 root , 检查它是否轴对称。
二、C语言代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
// judge if the node l is same as node r
bool isSame(struct TreeNode* l, struct TreeNode* r){
if(!l && !r)
return true;
else{
if(!l || !r)
return false;
else{
if(l->val != r->val)
return false;
else
return true;
}
}
}
// judge if all left notes are same as right notes
bool judge(struct TreeNode* l, struct TreeNode* r){
if(!isSame(l, r))
return false;
else{
if(!l)
return true;
else{
struct TreeNode* ll = l->left;
struct TreeNode* rr = r->right;
if(!judge(ll, rr))
return false;
struct TreeNode* lr = l->right;
struct TreeNode* rl = r->left;
if(!judge(lr, rl))
return false;
else
return true;
}
}
}
bool isSymmetric(struct TreeNode* root){
if(!root)
return true;
else
return judge(root->left, root->right);
}