c语言计算二叉树的深度全部代码
时间: 2024-12-08 21:23:35 浏览: 21
C语言编写二叉树的代码
在C语言中,计算二叉树的深度(即高度)通常可以使用递归的方式来实现。这里是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算二叉树深度的函数
int maxDepth(TreeNode* root) {
// 如果根节点为空,则返回0
if (root == NULL) return 0;
// 否则,分别计算左子树和右子树的深度,并取较大值加1
int left_depth = maxDepth(root->left);
int right_depth = maxDepth(root->right);
// 返回当前节点的最大深度
return (left_depth > right_depth) ? left_depth + 1 : right_depth + 1;
}
int main() {
// 创建一个示例二叉树
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->val = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->val = 3;
root->right->left = (TreeNode*)malloc(sizeof(TreeNode));
root->right->left->val = 4;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = NULL;
// 计算并打印二叉树深度
int depth = maxDepth(root);
printf("The maximum depth of the binary tree is: %d\n", depth);
free(root); // 释放内存
return 0;
}
```
在这个例子中,`maxDepth()` 函数会遍历整个二叉树,如果遇到空节点就停止递归,然后返回当前路径到最深叶子节点的距离。
阅读全文