用c语言实现,已知二叉排序树采用二叉链表存储结构(lchild,data,rchild),根结点的指针为T,且有int data。现已知int x,请设计算法,从大到小输出二叉排序树中所有值不小于x的结点的data。
时间: 2024-02-15 22:05:33 浏览: 75
二叉排序树的C语言实现
5星 · 资源好评率100%
以下是用C语言实现的算法,从大到小输出二叉排序树中所有值不小于x的结点的data:
```c
typedef struct Node {
int data;
struct Node *lchild, *rchild;
} Node, *Tree;
void printNodes(Tree T, int x) {
if (!T) {
return;
}
if (T->data >= x) {
printNodes(T->rchild, x);
printf("%d ", T->data);
printNodes(T->lchild, x);
} else {
printNodes(T->rchild, x);
}
}
```
具体实现思路如下:
首先判断当前结点是否为空,如果为空则直接返回。
对于每个结点,如果它的值不小于x,则先遍历右子树,输出当前结点的值,再遍历左子树。
如果当前结点的值小于x,则只需要遍历右子树。
总体思路就是从大到小遍历二叉排序树,只输出值不小于x的结点的data。
阅读全文