1 题目描述:
2 解题思路:
利用递归方式,判断当前根节点的左节点和右节点的情况。
3 代码详情:
/* 对称二叉树 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
bool isSymmetric(struct TreeNode* root);
bool IsMirror(TreeNode* t1, TreeNode* t2);
bool isSymmetric(struct TreeNode* root) {
return IsMirror(root,root);
}
bool IsMirror(TreeNode* t1, TreeNode* t2)
{
if (t1 == NULL && t2 == NULL) {
return true;
}
if (t1 == NULL || t2 == NULL) {
return false;
}
return (t1->val == t2->val) && IsMirror(t1->right, t2->left) && IsMirror(t1->left, t2->right);
}
int main()
{
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->left = NULL;
root->left->right = NULL;
root->left->val = 2;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->left = NULL;
root->right->right = NULL;
root->right->val = 2;
bool flag = isSymmetric(root);
return 0;
}