以下是一个使用 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 表示结束输入。 [2024-11-14 19:15:40 | AI写代码神器 | 644点数解答]