编写一个程序,实现二叉树高度的求取。利用二叉树的性质及二叉树前序遍历的思想,计算二叉树的高度。c语言编写
时间: 2023-12-01 14:03:20 浏览: 83
以下是利用递归算法求取二叉树高度的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
int val;
printf("Enter the value of the node (Enter -1 for no node): ");
scanf("%d", &val);
if (val == -1) {
return NULL;
}
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = createTree();
node->right = createTree();
return node;
}
// 递归求取二叉树高度
int getTreeHeight(TreeNode *root) {
if (root == NULL) {
return 0;
}
int leftHeight = getTreeHeight(root->left);
int rightHeight = getTreeHeight(root->right);
return (leftHeight > rightHeight) ? leftHeight + 1 : rightHeight + 1;
}
int main() {
TreeNode *root = createTree();
int treeHeight = getTreeHeight(root);
printf("The height of the binary tree is: %d\n", treeHeight);
return 0;
}
```
程序运行时,会提示用户输入二叉树的节点值,输入-1表示该节点不存在。然后利用前序遍历的思想,递归求取左右子树的高度,最终返回左右子树中高度更大的一个再加上当前节点高度1,即为整棵二叉树的高度。
阅读全文