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;
}