C语言使用scanf和结构体创建二叉树 - 附代码示例
C语言使用scanf和结构体创建二叉树
本文介绍如何使用C语言的scanf函数和结构体来创建二叉树,并提供详细的代码示例和解释。
代码示例
以下是使用scanf函数结合结构体来创建二叉树的代码示例:c#include <stdio.h>#include <stdlib.h>
// 二叉树节点定义struct Node { int data; struct Node* left; struct Node* right;};
// 创建新的节点struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); if (newNode == NULL) { printf('内存分配失败! '); exit(1); } newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode;}
// 层序生成二叉树struct Node* levelOrderGenerate() { struct Node* root = NULL; int size, i; printf('请输入二叉树节点的个数: '); scanf('%d', &size);
if (size == 0) return NULL;
struct Node** queue = (struct Node**)malloc(size * sizeof(struct Node*)); int rear = 0, front = 0;
for (i = 0; i < size; i++) { int data; printf('请输入节点%d的数据: ', i + 1); scanf('%d', &data);
struct Node* newNode = createNode(data);
if (root == NULL) root = newNode; else { struct Node* currentNode = queue[front];
if (currentNode->left == NULL) currentNode->left = newNode; else { currentNode->right = newNode; front++; } }
queue[rear++] = newNode; } free(queue);
return root;}
// 测试代码int main() { struct Node* root = levelOrderGenerate();
// 输出二叉树的节点数据 printf('二叉树的节点数据: '); printf('%d ', root->data); printf('%d ', root->left->data); printf('%d ', root->right->data); printf('%d ', root->left->left->data); printf('%d ', root->left->right->data); printf('%d ', root->right->left->data); printf('%d
', root->right->right->data);
return 0;}
代码解释
- 定义二叉树节点结构体: 代码首先定义了一个名为
Node的结构体,用于表示二叉树的节点。每个节点包含三个成员:存储数据的data,指向左子节点的指针left,以及指向右子节点的指针right。2. 创建新节点:createNode函数用于创建一个新的节点。它接收一个整数作为节点的数据,并返回指向新创建节点的指针。3. 层序生成二叉树:levelOrderGenerate函数实现了层序生成二叉树的功能。 - 首先,它提示用户输入二叉树节点的个数。 - 然后,它创建一个队列用于存储节点,并按照层序遍历的顺序将节点添加到队列中。 - 在添加节点的过程中,它会根据用户输入的数据创建新的节点,并将新节点连接到父节点上。4. 测试代码:main函数中调用了levelOrderGenerate函数来创建二叉树,并输出了二叉树的节点数据。
注意
- 这段代码只是一个基本的示例,实际的二叉树操作可能需要更多的代码来实现各种功能。- 在实际应用中,需要根据具体的需求修改和完善代码。
原文地址: https://www.cveoy.top/t/topic/RPW 著作权归作者所有。请勿转载和采集!