c语言输出二叉树中最小结点值
时间: 2024-05-11 20:17:24 浏览: 136
假设二叉树的结点定义如下:
```
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
```
则输出二叉树中最小结点值的 C 语言代码如下:
```
int getMinValue(struct TreeNode* root) {
if(root == NULL) {
return -1; // 空树返回-1
}
while(root->left != NULL) {
root = root->left; // 不断往左走
}
return root->val;
}
```
首先判断树是否为空,如果为空则返回-1。否则从根结点开始,不断往左走,直到左子树为空,此时当前结点就是最小值结点。返回该结点的值即可。
相关问题
c语言按先序建立二叉树,然后输出最小结点值
好的,让我来解答你的问题。首先,按照先序建立二叉树的代码如下:
```
#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` 函数查找最小值,并输出结果。
希望这个回答能够解决你的问题。如果还有其他问题,请随时向我提问!
按先序次序建立一棵二叉树(二叉链表),然后输出树中最小结点值输入#代表此处结点空缺,输出树中最小值结点,输出结果为A(C语言表示)
1. 按先序次序建立一棵二叉树(二叉链表):
按先序次序建立二叉树的方式是先访问根节点,再访问左子树,最后访问右子树。具体建树过程是:
1. 读入一个字符 ch。
2. 若 ch 为字符'#',则返回空节点。
3. 若 ch 不为字符'#',则新建一个节点,并将其值赋为 ch。
4. 递归调用建立其左子树。
5. 递归调用建立其右子树。
6. 返回该节点。
以如下二叉树为例:
1
/ \
2 3
/ \ / \
# 4 5 #
/ \
6 #
按先序次序输入的结果为:1 2 # 4 6 # # # 3 5 # #
建立二叉树的过程如下:
1
/ \
2 3
/ \
5 #
最终建立的二叉树为:
1
/ \
2 3
/ \
5 #
2. 输出树中最小结点值
对于二叉搜索树(BST),最小值一定在树的最左边,即最左边的叶子节点。因此,我们可以进行如下操作:
1. 从根节点开始遍历,一直向左走,直到遇到叶子节点为止。
2. 返回该叶子节点的值,即为树中最小结点值。
对于上述二叉树,最小结点值为 2。
阅读全文