学堂 学堂 学堂公众号手机端

在C语言中,可以通过结构体和递归函数来实现二叉树的生成

lewis 1年前 (2024-03-13) 阅读数 4 #技术

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

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

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

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


版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门