酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]