]用C语言实现数据结构 设计一个算法MaxNode,求出一棵给定二叉树的最大值的结点值
时间: 2023-06-25 19:06:53 浏览: 187
算法与数据结构实验一(2)单链表
下面是用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
//定义二叉树结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
//定义函数MaxNode,求出一棵给定二叉树的最大值的结点值
int MaxNode(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
int max_val = root->val;
if (root->left != NULL) {
int left_max = MaxNode(root->left);
if (left_max > max_val) {
max_val = left_max;
}
}
if (root->right != NULL) {
int right_max = MaxNode(root->right);
if (right_max > max_val) {
max_val = right_max;
}
}
return max_val;
}
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 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->right->val = 4;
root->right->right->left = NULL;
root->right->right->right = NULL;
int max_val = MaxNode(root);
printf("The maximum value in the binary tree is %d\n", max_val);
return 0;
}
```
在这个代码中,我们定义了一个结构体`TreeNode`来表示二叉树的节点。函数`MaxNode`采用递归的思想,先判断当前节点是否为空,如果为空则返回0。然后,分别计算左子树和右子树中的最大值,与当前节点的值进行比较,得到整棵树的最大值。
在`main`函数中,我们构建了一棵二叉树,并且调用`MaxNode`函数求出了最大值,并输出结果。
阅读全文