c语言,按先序建立一个二叉树,然后输出先序遍历结果的第k个结点值的完整代码
时间: 2024-05-11 10:17:01 浏览: 88
C语言 求一个二叉树中位于先序序列中第k个位置的结点的值.doc
以下是用C语言按先序建立二叉树,并且输出先序遍历结果的第k个结点值的代码。
```
#include <stdio.h>
#include <stdlib.h>
struct node {
char data;
struct node* left;
struct node* right;
};
struct node* create_node(char data) {
struct node* new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = data;
new_node->left = NULL;
new_node->right = NULL;
return new_node;
}
struct node* build_tree() {
char data;
scanf("%c", &data);
getchar();
if (data == '#') {
return NULL;
}
struct node* root = create_node(data);
root->left = build_tree();
root->right = build_tree();
return root;
}
void preorder(struct node* root, char* result, int* index) {
if (root == NULL) {
return;
}
result[*index] = root->data;
(*index)++;
preorder(root->left, result, index);
preorder(root->right, result, index);
}
char kth_node_value(struct node* root, int k) {
char* result = (char*)malloc(sizeof(char) * 100);
int index = 0;
preorder(root, result, &index);
char kth_value = result[k - 1];
free(result);
return kth_value;
}
int main() {
struct node* root = build_tree();
int k;
scanf("%d", &k);
char kth_value = kth_node_value(root, k);
printf("%c", kth_value);
return 0;
}
```
其中,`build_tree` 函数用于按先序建立二叉树,`preorder` 函数用于进行先序遍历,并将遍历结果存入 `result` 数组中,`kth_node_value` 函数用于获取先序遍历结果的第k个结点值,最后在 `main` 函数中调用 `build_tree` 函数建立二叉树,输入整数 `k`,并调用 `kth_node_value` 函数获取第k个结点值。
阅读全文