用C语言输入二叉树所有节点求二叉树的高度
时间: 2024-01-23 10:44:33 浏览: 79
c代码-求二叉树的叶子节点和高度
5星 · 资源好评率100%
二叉树的高度是指树的根节点到叶子节点的最长路径长度。可以使用递归的方式求解二叉树的高度具体实现如下:
```c
#includestdio.h>
#include <>
// 二叉的结构体定义
struct TreeNode {
int;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建节点
TreeNode* createNode(int data) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入节点
TreeNode* insertNode(TreeNode* root, int data) {
if (root == NULL) {
return createNode(data);
} else if (data <= root->data) {
root->left = insertNode(root->left, data);
} else {
root->right = insertNode(root->right, data);
}
return root;
}
// 计算二叉树的高度
int calculateHeight(TreeNode* root) {
if (root == NULL) {
return -1;
}
int leftHeight = calculateHeight(root->left);
int rightHeight = calculateHeight(root->right);
return (leftHeight > rightHeight) ? (leftHeight + 1) : (rightHeight + 1);
}
int main() {
TreeNode* root = NULL;
root = insertNode(root, 5);
insertNode(root, 3);
insertNode(root, 7);
insertNode(root, 1);
insertNode(root, 4);
insertNode(root, 6);
insertNode(root, 8);
int height = calculateHeight(root);
printf("二叉树的高度为:%d\n", height);
return 0;
}
```
在上面的代码中,我们定义了二叉树的结构体,包括节点值、左子树和右子树。使用 `createNode()` 函数创建一个新节点,使用 `insertNode()` 函数向二叉树中插入节点,使用 `calculateHeight()` 函数计算二叉树的高度。
`calculateHeight()` 函数是递归的,如果当前节点为空,则返回 -1,否则计算左子树和右子树的高度,取较大值加 1 即为当前节点的高度,最终返回整个二叉树的高度。
在 `main()` 函数中,我们创建了一个二叉树,并计算了它的高度。输出结果为:
```
二叉树的高度为:2
```
阅读全文