#include <stdio.h>
#include <stdlib.h>
// 二叉树结点的定义
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建新结点
struct TreeNode* createNode(int data) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
if (newNode == NULL) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 计算二叉树的深度
int calculateDepth(struct TreeNode* root) {
if (root == NULL) {
return 0;
} else {
int leftDepth = calculateDepth(root->left);
int rightDepth = calculateDepth(root->right);
return (leftDepth > rightDepth) ? (leftDepth + 1) : (rightDepth + 1);
}
}
int main() {
// 创建二叉树
struct TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 计算二叉树的深度
int depth = calculateDepth(root);
printf("二叉树的深度为:%d\n", depth);
// 释放内存
free(root->left->left);
free(root->left->right);
free(root->left);
free(root->right);
free(root);
return 0;
}