给定一个二叉树,检查它是否是镜像对称的。c语言
时间: 2024-10-25 07:12:41 浏览: 27
c语言leetcode题解之第101题对称二叉树.zip
给定一个二叉树,判断其是否是镜像对称,意味着如果将树从根节点开始左右翻转,得到的新树与原树是相同的结构。在C语言中,我们可以采用递归的方式进行这个操作:
首先,我们需要定义一个二叉树节点的结构体:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
然后,可以编写一个函数`isSymmetric(TreeNode* root)`来进行判断。该函数会比较当前节点的左孩子和右孩子的值,以及它们的左右孩子是否都满足对称条件:
```c
int isSymmetric(TreeNode* root) {
if (root == NULL) {
return 1; // 空树是镜像对称的
}
return isMirror(root->left, root->right);
}
int isMirror(TreeNode* node1, TreeNode* node2) {
if (node1 == NULL && node2 == NULL) {
return 1;
} else if (node1 != NULL && node2 != NULL) {
return node1->val == node2->val && isMirror(node1->left, node2->right) && isMirror(node1->right, node2->left);
} else {
return 0;
}
}
```
这个函数会先检查根节点的值是否相等,然后递归地对比两个子树是否对称。
阅读全文