用C语言代码表示按先序次序建立一棵二叉树(二叉链表),然后输出树中最小结点值输入#代表此处结点空缺,输出树中最小值结点,输出结果为A
时间: 2024-05-12 13:18:20 浏览: 112
以下是用C语言代码表示按先序次序建立一棵二叉树(二叉链表),然后输出树中最小结点值输入的方法。
```
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode *createTree() {
struct TreeNode *root;
int val;
scanf("%d", &val); // 读入当前结点的值
if (val == -1) { // -1 表示空结点
return NULL;
}
root = (struct TreeNode *)malloc(sizeof(struct TreeNode)); // 分配空间
root->val = val;
root->left = createTree(); // 递归建立左子树
root->right = createTree(); // 递归建立右子树
return root;
}
int getMin(struct TreeNode *root) {
if (root == NULL) { // 如果结点为空,返回最大值
return 1000000;
}
int left = getMin(root->left); // 递归获取左子树中的最小值
int right = getMin(root->right); // 递归获取右子树中的最小值
if (root->val < left && root->val < right) { // 如果当前结点比左右子树中的结点都小,返回当前结点值
return root->val;
} else if (left < right) { // 否则,返回左右子树中的最小值
return left;
} else {
return right;
}
}
int main() {
struct TreeNode *root = createTree(); // 建立二叉树
int minVal = getMin(root); // 获取树中的最小值
printf("最小值为:%d", minVal); // 输出结果
return 0;
}
```
阅读全文