返回二叉树中最大值c语言实现
时间: 2023-11-14 18:12:23 浏览: 124
二叉树中最大值的查找可以通过遍历二叉树实现,以下是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建一个新的二叉树节点
TreeNode* createNode(int val) {
TreeNode *node = (TreeNode*) malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 向二叉树插入一个节点
void insertNode(TreeNode **root, int val) {
if (*root == NULL) {
*root = createNode(val);
return;
}
if (val < (*root)->val) {
insertNode(&((*root)->left), val);
} else {
insertNode(&((*root)->right), val);
}
}
// 遍历二叉树查找最大值
int findMax(TreeNode *root) {
if (root == NULL) {
printf("Error: the tree is empty.\n");
return -1;
}
if (root->right == NULL) {
return root->val;
}
return findMax(root->right);
}
int main() {
TreeNode *root = NULL;
int nums[] = {5, 3, 7, 1, 4, 6, 8};
int size = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < size; i++) {
insertNode(&root, nums[i]);
}
int max = findMax(root);
printf("The maximum value in the binary tree is: %d\n", max);
return 0;
}
```
在这个实现中,我们首先定义了一个二叉树节点结构体 `TreeNode`,其中包含节点值 `val` 和指向左右子节点的指针 `left` 和 `right`。然后我们定义了 `createNode` 函数,用于创建一个新的二叉树节点;`insertNode` 函数,用于向二叉树插入一个节点;以及 `findMax` 函数,用于遍历二叉树查找最大值。
在 `main` 函数中,我们首先创建一个空的二叉树 `root`,然后依次插入数组 `nums` 中的每个元素。最后调用 `findMax` 函数查找二叉树中的最大值,并输出结果。
需要注意的是,这个实现中并没有对输入的数据进行去重处理,如果输入了重复的值,可能会导致二叉树节点重复。
阅读全文