二叉树的二叉链表存储并输出最小值和最大值c语言
时间: 2024-03-19 13:44:28 浏览: 31
二叉树的二叉链表存储结构定义如下:
```c
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
```
其中,`data`表示节点中存储的数据,`lchild`和`rchild`分别指向左子树和右子树。
我们可以使用中序遍历二叉树,得到一个有序的序列,然后输出最小值和最大值即可。具体实现如下:
```c
void InOrderTraverse(BiTree T, int *min, int *max)
{
if(T)
{
InOrderTraverse(T->lchild, min, max);
if(T->data < *min) // 更新最小值
*min = T->data;
if(T->data > *max) // 更新最大值
*max = T->data;
InOrderTraverse(T->rchild, min, max);
}
}
int main()
{
BiTree T;
int min = INT_MAX, max = INT_MIN; // 初始化最小值和最大值
// 构建二叉树,省略代码
InOrderTraverse(T, &min, &max);
printf("min = %d, max = %d\n", min, max);
return 0;
}
```
在上面的代码中,我们使用了指针传递的方式,将最小值和最大值的地址传递给了函数`InOrderTraverse()`,函数中通过对`min`和`max`的操作来更新最小值和最大值。输出最小值和最大值时,直接访问`min`和`max`即可。
阅读全文