按先序次序建立一棵二叉树,然后树出先序遍历结果的第k个结点值的c语言代码
时间: 2023-06-12 21:01:58 浏览: 70
以下是按照先序次序建立一棵二叉树,然后树出先序遍历结果的第k个结点值的C语言代码:
```
#include<stdio.h>
#include<stdlib.h>
struct Node {
int val;
struct Node* left;
struct Node* right;
};
int kth_node_val(struct Node* root, int k) {
if (root == NULL || k < 0) {
return -1;
}
if (k == 1) {
return root->val;
}
int left_num = 0;
if (root->left != NULL) {
left_num = kth_node_val(root->left, k-1);
}
if (left_num != -1) {
return left_num;
}
int right_num = 0;
if (root->right != NULL) {
right_num = kth_node_val(root->right, k-1);
}
if (right_num != -1) {
return right_num;
}
return -1;
}
int main() {
struct Node* root = (struct Node*)malloc(sizeof(struct Node));
root->val = 1;
root->left = (struct Node*)malloc(sizeof(struct Node));
root->left->val = 2;
root->right = (struct Node*)malloc(sizeof(struct Node));
root->right->val = 3;
root->left->left = (struct Node*)malloc(sizeof(struct Node));
root->left->left->val = 4;
root->left->right = (struct Node*)malloc(sizeof(struct Node));
root->left->right->val = 5;
int k = 3;
int kth_val = kth_node_val(root, k);
printf("The %d-th node value is %d\n", k, kth_val);
return 0;
}
```
注释:先序遍历即按照 根节点 --> 左子树 --> 右子树 的顺序遍历二叉树。
运行结果:The 3-th node value is 5