按先序次序建立一棵二叉树(二叉链表),然后输出树中最小结点值,写出代码
时间: 2024-05-02 19:22:46 浏览: 101
好的,我明白了。以下是代码:
```
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void buildTree(TreeNode*& root) {
int num;
cin >> num;
if (num == 0) return;
root = new TreeNode(num);
buildTree(root->left);
buildTree(root->right);
}
int findMin(TreeNode* root) {
if (root == NULL) return INT_MAX;
int leftMin = findMin(root->left);
int rightMin = findMin(root->right);
return min(root->val, min(leftMin, rightMin));
}
int main() {
TreeNode* root = NULL;
buildTree(root);
int minVal = findMin(root);
cout << "The minimum value in the tree is: " << minVal << endl;
return 0;
}
```
在这个程序中,我们首先用先序遍历的方式来构建一棵二叉树。然后,我们使用一个递归函数 findMin 来查找树中的最小值。在递归函数中,我们先判断当前结点是否为空,如果为空则返回极大值 INT_MAX。否则,我们递归地查找左子树和右子树中的最小值,然后与当前结点的值进行比较,取其中最小的值返回。
最后,我们在主函数中调用 buildTree 和 findMin 函数来构建二叉树并查找最小值,然后输出结果。
阅读全文