编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。C++
时间: 2023-03-20 12:01:43 浏览: 140
以下是在C语言中实现的递归算法,用于在二叉树中找到先序遍历序列中第k个节点的值:
```c
#include<stdio.h>
#include<stdlib.h>
/*定义二叉树结构*/
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
/*二叉树的先序遍历*/
void preorder(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preorder(root->left);
preorder(root->right);
}
/*在二叉树中查找第k个节点的值*/
void findKthNode(TreeNode* root, int k, int* count, int* result) {
if (root == NULL) {
return;
}
/*先遍历左子树*/
findKthNode(root->left, k, count, result);
/*如果还没有找到第k个节点,则遍历当前节点*/
(*count)++;
if (*count == k) {
*result = root->val;
return;
}
/*最后遍历右子树*/
findKthNode(root->right, k, count, result);
}
int main() {
/*构造二叉树*/
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
TreeNode* left1 = (TreeNode*)malloc(sizeof(TreeNode));
left1->val = 2;
root->left = left1;
TreeNode* right1 = (TreeNode*)malloc(sizeof(TreeNode));
right1->val = 3;
root->right = right1;
TreeNode* left2 = (TreeNode*)malloc(sizeof(TreeNode));
left2->val = 4;
left1->left = left2;
TreeNode* right2 = (TreeNode*)malloc(sizeof(TreeNode));
right2->val = 5;
left1->right = right2;
TreeNode* left3 = (TreeNode*)malloc(sizeof(TreeNode));
left3->val = 6;
right1->left = left3;
TreeNode* right3 = (TreeNode*)malloc(sizeof(TreeNode));
right3->val = 7;
right1->right = right3;
/*输出二叉树的先序遍历*/
printf("Preorder traversal of the binary tree:\n");
preorder(root);
printf("\n");
/*在二叉树中查找第k个节点*/
int k = 4;
int count = 0;
int result = -1;
findKthNode(root, k, &count, &result);
if (result != -1) {
printf("The value of the node at position %d in the preorder traversal is: %d\n", k, result);
}
else {
printf("There is no node at position %d in the preorder traversal.\n", k);
}
return 0;
}
```
在上面的代码中,我们定义了一个二叉树结构体`TreeNode`,包含`val`、`left`和`right`三个成员变量,分别表示当前节点的值、左子树和右子树。我们还定义了两个辅助函数:`preorder`函数用于输出二叉树的先序遍历;`findKthNode`函数
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)