c语言 定义二叉树的数据,创建一颗二叉树并遍历,计算其高度
时间: 2024-01-23 12:02:53 浏览: 76
首先,定义二叉树的数据结构如下:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
其中,`val` 表示节点的值,`left` 和 `right` 分别表示左子节点和右子节点。
接下来,可以编写函数创建一颗二叉树,例如:
```c
TreeNode* createTree() {
int val;
scanf("%d", &val);
if (val == -1) {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = createTree();
root->right = createTree();
return root;
}
```
这个函数通过递归方式创建二叉树,当输入 `-1` 时表示这个节点为空。
最后,可以编写函数计算二叉树的高度,例如:
```c
int getHeight(TreeNode* root) {
if (!root) {
return 0;
}
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
int height = leftHeight > rightHeight ? leftHeight : rightHeight;
return height + 1;
}
```
这个函数也是通过递归方式计算二叉树的高度,每个节点的高度为左右子树高度的最大值加 1。
最后,可以在主函数中调用这些函数,例如:
```c
int main() {
TreeNode* root = createTree();
int height = getHeight(root);
printf("Height: %d\n", height);
return 0;
}
```
这样就可以创建一颗二叉树并计算其高度了。
阅读全文