温馨提示×

C语言递归生成二叉树怎么实现

小亿
140
2024-02-19 15:38:33
栏目: 编程语言

在C语言中,可以通过结构体和递归函数来实现二叉树的生成。下面是一个简单的示例代码:

#include <stdio.h> #include <stdlib.h> // 定义二叉树的节点结构体 typedef struct Node { int data; struct Node* left; struct Node* right; } Node; // 创建新节点 Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } // 递归生成二叉树 Node* createBinaryTree() { int data; Node* root = NULL; printf("输入节点的值(-1表示空节点):"); scanf("%d", &data); if (data == -1) { return NULL; } root = createNode(data); printf("输入%d的左子节点:\n", data); root->left = createBinaryTree(); printf("输入%d的右子节点:\n", data); root->right = createBinaryTree(); return root; } // 测试函数 void preorderTraversal(Node* root) { if (root != NULL) { printf("%d ", root->data); preorderTraversal(root->left); preorderTraversal(root->right); } } int main() { Node* root = createBinaryTree(); printf("前序遍历结果:\n"); preorderTraversal(root); return 0; } 

在上面的代码中,我们首先定义了节点结构体 Node,然后定义了一个用于创建新节点的函数 createNode。接着使用递归函数 createBinaryTree 来生成二叉树,用户可以输入节点的值,-1表示空节点。最后通过前序遍历函数 preorderTraversal 来输出生成的二叉树。

你可以运行这段代码,按照提示输入节点的值来生成一个二叉树,并输出前序遍历的结果。

0