用c语言建立一个二叉树并遍历并计算二叉树高度
时间: 2024-05-03 10:21:01 浏览: 78
好的,首先您需要确定二叉树结构体的定义,以便于存储数据和指向左右子节点的指针。以下是一个简单的二叉树结构体定义示例:
```
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
```
接下来,您需要编写函数来构造二叉树,包括插入节点和遍历二叉树。以下是一个示例函数:
```
void insert(struct TreeNode **node, int val) {
if (*node == NULL) {
struct TreeNode* new_node = malloc(sizeof(struct TreeNode));
new_node->val = val;
new_node->left = NULL;
new_node->right = NULL;
*node = new_node;
} else {
if (val < (*node)->val) {
insert(&((*node)->left), val);
} else {
insert(&((*node)->right), val);
}
}
}
int maxDepth(struct TreeNode* node) {
if (node == NULL) {
return 0;
} else {
int leftDepth = maxDepth(node->left);
int rightDepth = maxDepth(node->right);
if (leftDepth > rightDepth) {
return leftDepth + 1;
} else {
return rightDepth + 1;
}
}
}
```
insert 函数使用递归方式将节点插入到二叉树中,maxDepth 函数也使用递归方式计算二叉树的最大深度。可以在主函数中使用这些函数来构造二叉树并计算其高度,以下是一个示例:
```
int main() {
int values[] = {5, 3, 8, 2, 4, 7, 10};
int n = sizeof(values) / sizeof(int);
struct TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
insert(&root, values[i]);
}
int height = maxDepth(root);
printf("The height of the binary tree is %d\n", height);
return 0;
}
```
请注意这只是一个简单的二叉树示例,实际开发中需要考虑更多细节和边界情况。
阅读全文