本题目构造一棵二叉检索树。要求读入n个整数,以0结束。最后输出这棵树的先序序列。c语言实现
时间: 2023-12-21 13:04:36 浏览: 70
以下是一个用C语言实现的二叉搜索树的例子,实现了读入n个整数,以0结束,并输出先序序列的功能:
```c
#include <stdio.h>
#include <stdlib.h>
//定义二叉树的结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
//插入节点函数
TreeNode* insert(TreeNode* root, int val) {
if (root == NULL) {
//根节点为空,新建一个节点作为根节点
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
} else if (root->val > val) {
//插入节点值小于当前节点值,插入到左子树
root->left = insert(root->left, val);
} else {
//插入节点值大于等于当前节点值,插入到右子树
root->right = insert(root->right, val);
}
return root;
}
//先序遍历函数
void pre_order(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
pre_order(root->left);
pre_order(root->right);
}
int main() {
int n, val;
TreeNode* root = NULL;
printf("请输入n个整数,以0结束:\n");
while (scanf("%d", &val) != EOF && val != 0) {
root = insert(root, val);
}
printf("二叉搜索树的先序遍历序列为:\n");
pre_order(root);
printf("\n");
return 0;
}
```
运行程序后,输入一些整数,以0结束,就可以得到这些整数构成的二叉搜索树的先序遍历序列。
阅读全文