c语言求二叉树最大值
时间: 2023-07-02 20:16:07 浏览: 88
假设二叉树的节点结构如下:
```c
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
```
可以使用递归的方式求二叉树的最大值。具体实现如下:
```c
int maxVal(struct TreeNode* root) {
if (root == NULL) {
return INT_MIN; // 如果根节点为空,返回最小整数值
}
int leftMax = maxVal(root->left); // 递归求左子树最大值
int rightMax = maxVal(root->right); // 递归求右子树最大值
return fmax(root->val, fmax(leftMax, rightMax)); // 返回根节点、左子树最大值、右子树最大值中的最大值
}
```
调用 `maxVal` 函数即可求出二叉树的最大值,例如:
```c
int main() {
// 构造一棵二叉树
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = 1;
root->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->left->val = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->val = 3;
root->right->left = NULL;
root->right->right = NULL;
// 求二叉树的最大值
int max = maxVal(root);
printf("maxVal=%d\n", max);
return 0;
}
```