C 语言:任意输入二叉树,链式存储+横向凹入法输出代码实现
以下是一个使用 C 语言实现的通过用户输入构建二叉树,并使用横向凹入法输出的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 二叉树节点结构体 typedef struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; } TreeNode; // 创建新节点 TreeNode* createNode(int data) { TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } // 插入节点 TreeNode* insertNode(TreeNode* root, int data) { if (root == NULL) { return createNode(data); } if (data < root->data) { root->left = insertNode(root->left, data); } else if (data > root->data) { root->right = insertNode(root->right, data); } return root; } // 计算树的深度 int depth(TreeNode* root) { if (root == NULL) { return 0; } int leftDepth = depth(root->left); int rightDepth = depth(root->right); return (leftDepth > rightDepth? leftDepth : rightDepth) + 1; } // 以横向凹入方式打印二叉树 void printTree(TreeNode* root, int indent) { if (root == NULL) { return; } for (int i = 0; i < indent; i++) { printf(" "); } printf("%d\n", root->data); printTree(root->left, indent + 4); printTree(root->right, indent + 4); } // 释放二叉树内存 void freeTree(TreeNode* root) { if (root == NULL) { return; } freeTree(root->left); freeTree(root->right); free(root); } int main() { TreeNode* root = NULL; int data; printf("请输入二叉树节点的值(输入 -1 结束):\n"); while (1) { scanf("%d", &data); if (data == -1) { break; } root = insertNode(root, data); } printf("横向凹入法输出二叉树:\n"); printTree(root, 0); freeTree(root); return 0; } ``` 这段代码实现了通过用户输入构建二叉树,并以横向凹入的方式进行输出。在输入节点值时,输入 -1 表示结束输入。 ######[AI写代码神器 | 644点数解答 | 2024-11-14 19:15:40]
- Java实现有序集合合并与交集算法(顺序表+单链表)(百度文心 | 1247点数解答 | 2026-03-25 10:35:22)29
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)337
- JS 代码:轻松定义含“Saab、Volvo、BMW”的数组变量 mycars( | 14点数解答 | 2024-05-19 20:47:47)431
- JS 代码:定义存储“saab”“volvo”“bmw”的数组变量 mycars( | 21点数解答 | 2024-05-20 22:18:13)294
- JS 代码:轻松定义含 "saab", "volvo", "bmw" 的数组 mycars(阿里通义 | 92点数解答 | 2024-05-20 22:44:37)341
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)354
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)501
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)389
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)30
- JSP 实战:用 List 存 Map 集合,循环十次添加姓名和年龄! (GPT | 753点数解答 | 2024-11-25 09:16:28)241
- Java JSP 代码:用 List 存储 Map 集合并循环添加姓名和年龄(GPT | 240点数解答 | 2024-11-25 09:17:43)266