C语言:用Queue实现二叉树轴对称检查(附代码示例)
以下是使用 C 语言和队列来检查二叉树是否轴对称的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 二叉树节点结构体 typedef struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; } TreeNode; // 创建新节点 TreeNode *newNode(int val) { TreeNode *node = (TreeNode *)malloc(sizeof(TreeNode)); node->val = val; node->left = NULL; node->right = NULL; return node; } // 检查二叉树是否轴对称 bool isSymmetric(TreeNode *root) { if (root == NULL) { return true; } // 创建两个队列 TreeNode queue1 = (TreeNode )malloc(sizeof(TreeNode *) * 1000); TreeNode queue2 = (TreeNode )malloc(sizeof(TreeNode *) * 1000); int front1 = 0, rear1 = 0, front2 = 0, rear2 = 0; queue1[rear1++] = root->left; queue2[rear2++] = root->right; while (front1 < rear1 && front2 < rear2) { TreeNode *node1 = queue1[front1++]; TreeNode *node2 = queue2[front2++]; if (node1 == NULL && node2 == NULL) { continue; } if (node1 == NULL || node2 == NULL || node1->val!= node2->val) { free(queue1); free(queue2); return false; } queue1[rear1++] = node1->left; queue1[rear1++] = node1->right; queue2[rear2++] = node2->right; queue2[rear2++] = node2->left; } free(queue1); free(queue2); return true; } // 测试示例 int main() { // 构建测试二叉树 TreeNode *root = newNode(1); root->left = newNode(2); root->right = newNode(2); root->left->left = newNode(3); root->left->right = newNode(4); root->right->left = newNode(4); root->right->right = newNode(3); if (isSymmetric(root)) { printf("二叉树是轴对称的\n"); } else { printf("二叉树不是轴对称的\n"); } return 0; } ``` 这段代码首先定义了二叉树的节点结构体,然后实现了创建新节点、使用队列检查二叉树是否轴对称的函数。在 `main` 函数中构建了一个测试二叉树并进行判断。 ######[AI写代码神器 | 679点数解答 | 2024-09-12 22:19:57]
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)57
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)286
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)286
- Three.js 示例代码解析:优化场景渲染与注意要点(字节豆包 | 164点数解答 | 2025-02-27 23:30:20)283
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)343
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)494
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)380
- Java开发必知:List、Set、Map和Queue四大接口的区别与应用场景(百度文心 | 396点数解答 | 2023-11-09 16:22:19)298
- 深度剖析:iOS开发中NSOperationQueue的特性、应用与优势(百度文心 | 588点数解答 | 2023-11-09 17:41:02)296
- Python 实现消息队列:根据指令处理 put 与 get 操作(字节豆包 | 182点数解答 | 2024-10-19 20:10:02)292
- C++ 代码剖析:邻接表结构定义及相关头文件引入(字节豆包 | 50点数解答 | 2024-11-20 23:42:31)218