统计二叉树中节点的值小于a的节点个数C语言
时间: 2024-11-03 19:20:54 浏览: 31
C语言递归方式统计二叉树叶子节点个数.zip
在C语言中,统计二叉搜索树(BST,Binary Search Tree)中所有节点值小于给定整数`a`的节点数量,可以使用递归的方式实现。假设我们有一个结构体`TreeNode`表示二叉树的节点,包含一个整数值`val`和两个指向左右子节点的指针`left`和`right`。
首先,你需要一个辅助函数来遍历树并计算满足条件的节点数。这里提供一个简单的思路:
```c
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int countNodesLessThan(TreeNode* root, int a) {
// 如果根节点为空,返回0
if (root == NULL) {
return 0;
}
// 如果当前节点值小于a,返回左子树节点数加上自身
if (root->val < a) {
return 1 + countNodesLessThan(root->right, a);
}
// 否则,如果当前节点值大于等于a,仅考虑右子树
else {
return countNodesLessThan(root->left, a);
}
}
```
这个函数会从根节点开始,根据每个节点的值与`a`的大小关系,递归地选择左或右子树继续遍历。当遍历到叶子节点或者找到大于等于`a`的节点时,停止该路径,并返回已访问的符合条件的节点数。
阅读全文