本题目构造一棵二叉检索树。要求读入n个整数,以0结束。最后输出这棵树的先序序列。 输入格式: 输入n个整数,以0表示结束,数据间以空格隔开。 输出格式: 输出这棵树的先序序列,以一个空格隔开,结尾也有一个空格。 输入样例: 34 50 23 12 30 23 0 输出样例: 34 23 12 23 30 50 c语言
时间: 2024-03-26 21:38:11 浏览: 45
建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数
这里是一份使用C语言实现构建二叉搜索树并输出先序遍历的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct Node {
int val;
struct Node *left, *right;
} Node;
// 创建新节点
Node* newNode(int val) {
Node* node = (Node*) malloc(sizeof(Node));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入节点
Node* insert(Node* root, int val) {
if (root == NULL) {
return newNode(val);
} else {
if (val < root->val) {
root->left = insert(root->left, val);
} else {
root->right = insert(root->right, val);
}
}
return root;
}
// 先序遍历二叉树
void preOrder(Node* root) {
if (root != NULL) {
printf("%d ", root->val);
preOrder(root->left);
preOrder(root->right);
}
}
int main() {
int n, val;
Node* root = NULL;
// 读入n个整数,构建二叉树
scanf("%d", &val);
while (val != 0) {
root = insert(root, val);
scanf("%d", &val);
}
// 输出先序遍历
preOrder(root);
printf("\n");
return 0;
}
```
输入样例:
```
34 50 23 12 30 23 0
```
输出样例:
```
34 23 12 30 50
```
阅读全文