C语言创建一棵用二叉链表方式存储的二叉树,并求它的高度。的代码
时间: 2023-06-03 16:02:25 浏览: 94
以下是C语言创建二叉树并求高度的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *left;
struct node *right;
} TreeNode;
// 创建二叉树
TreeNode *createBinaryTree() {
int data;
scanf("%d", &data);
if (data == -1) { // -1 表示没有子节点
return NULL;
}
TreeNode *node = (TreeNode *)malloc(sizeof(TreeNode));
node->data = data;
node->left = createBinaryTree();
node->right = createBinaryTree();
return node;
}
// 计算二叉树高度
int getHeight(TreeNode *root) {
if (root == NULL) {
return 0;
}
int leftHeight = getHeight(root->left); // 左子树高度
int rightHeight = getHeight(root->right); // 右子树高度
return (leftHeight > rightHeight ? leftHeight : rightHeight) + 1; // 返回较大的子树高度+1
}
int main() {
TreeNode *root = createBinaryTree();
printf("二叉树的高度为:%d\n", getHeight(root));
return 0;
}
```
输入格式:
按照前序遍历的顺序输入二叉树的节点。-1 表示没有子节点。
例如,一个二叉树为:
```
1
/ \
2 3
/ \ \
4 5 6
```
输入为:1 2 4 -1 -1 5 -1 -1 3 -1 6 -1 -1
阅读全文