递归算法实现二叉树的创建c语言
时间: 2023-10-04 09:14:29 浏览: 113
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 递归创建二叉树
TreeNode* createTree() {
int val;
scanf("%d", &val); // 读入节点的值
if (val == -1) { // 如果节点的值为-1,表示该节点为空
return NULL;
}
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode)); // 创建新的节点
node->val = val;
node->left = createTree(); // 递归创建左子树
node->right = createTree(); // 递归创建右子树
return node;
}
// 前序遍历二叉树
void preorderTraversal(TreeNode *node) {
if (node == NULL) {
return;
}
printf("%d ", node->val);
preorderTraversal(node->left);
preorderTraversal(node->right);
}
int main() {
TreeNode *root = createTree(); // 创建二叉树
printf("前序遍历结果为:");
preorderTraversal(root); // 前序遍历二叉树
return 0;
}
阅读全文