统计二叉排序树小于等于给定值的个数,用C语言实现该递归算法
时间: 2024-12-20 07:25:26 浏览: 27
在C语言中,我们可以使用递归方法来计算二叉搜索树(BST)中小于等于某个给定值的元素个数。这是一种常见的树遍历问题,这里我们假设每个节点的值都大于其左子树的所有节点值,并且小于其右子树的所有节点值。
递归函数的基本思路是:
1. 如果根节点为空,返回0,表示没有元素。
2. 如果给定值小于当前节点的值,那么在左子树中查找。
3. 否则,在当前节点和左子树中查找,即返回左子树的结果加1(包括当前节点)。
下面是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int countNodes(TreeNode* root, int target) {
// 递归终止条件
if (root == NULL) return 0;
// 如果目标值小于当前节点,向左子树查找
if (target < root->val)
return countNodes(root->left, target);
else {
// 包含当前节点,向左子树加上1并查找剩余部分
return 1 + countNodes(root->right, target);
}
}
int main() {
// 创建一个示例二叉搜索树
TreeNode* root = ... // 根据实际需求构建二叉树
int target = ...;
int result = countNodes(root, target);
printf("小于等于%d的节点个数: %d\n", target, result);
return 0;
}
```
阅读全文