请用c语言编写一个求二叉树高度的算法
时间: 2023-06-05 20:07:38 浏览: 178
好的,以下是用C语言编写一个求二叉树高度的算法:
```C
#include <stdio.h>
#include <stdlib.h>
// 结构体定义
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建二叉树
Node* createTree() {
int data;
Node* root = NULL;
scanf("%d", &data);
if (data != -1) {
root = (Node*) malloc(sizeof(Node));
root->data = data;
root->left = createTree();
root->right = createTree();
}
return root;
}
// 递归求二叉树高度
int getHeight(Node* root) {
if (root == NULL) {
return 0;
} else {
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
return (leftHeight > rightHeight) ? (leftHeight + 1) : (rightHeight + 1);
}
}
// 主函数
int main() {
Node* root = createTree();
printf("Height of tree is %d\n", getHeight(root));
return 0;
}
```
以上代码中,createTree函数可以通过输入数组递归创建一个二叉树,并返回根节点。getHeight函数用递归的方法计算整个二叉树的高度,其中参数root表示根节点。最后,我们在主函数中调用createTree函数和getHeight函数,并输出结果。
阅读全文