c语言按先序建立二叉树,然后输出最小结点值
时间: 2023-06-09 15:07:47 浏览: 185
好的,让我来解答你的问题。首先,按照先序建立二叉树的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* createTree() {
int val;
scanf("%d", &val);
if (val == -1) return NULL;
struct TreeNode *root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = val;
root->left = createTree();
root->right = createTree();
return root;
}
void findMin(struct TreeNode* root, int *min) {
if (root == NULL) return;
if (root->val < *min) *min = root->val;
findMin(root->left, min);
findMin(root->right, min);
}
int main() {
struct TreeNode *root = createTree();
int min = root->val;
findMin(root, &min);
printf("%d\n", min);
return 0;
}
```
首先,我们通过 `createTree` 函数按照先序建立二叉树。在建立树的过程中,如果读入的值为 -1,那么就返回 NULL,表示这个结点为空。
接下来,我们定义一个 `findMin` 函数来查找最小值。对于每个结点,如果该结点的值比当前最小值还要小,那么就将其更新为最小值。然后递归地寻找左子树和右子树。
最后,在主函数中,我们初始化最小值为根结点的值,然后调用 `findMin` 函数查找最小值,并输出结果。
希望这个回答能够解决你的问题。如果还有其他问题,请随时向我提问!
阅读全文