用c语言生成一个查找二叉树深度的代码片段
时间: 2024-11-20 11:44:47 浏览: 8
在 C 语言中,我们可以使用递归的方式来计算二叉树的深度。这里是一个简单的代码片段,它假设我们有一个名为 `Node` 的结构体,代表二叉树节点,其中包含一个整数值 `val` 和两个指向左右子节点的指针 `left` 和 `right`:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} Node;
// 计算二叉树深度的辅助函数
int maxDepth(struct TreeNode* node) {
if (node == NULL) { // 如果节点为空,返回0表示深度为0
return 0;
} else {
// 递归地计算左子树和右子树的最大深度,然后取较大值加1作为当前节点的深度
int left_depth = maxDepth(node->left);
int right_depth = maxDepth(node->right);
return (left_depth > right_depth) ? left_depth + 1 : right_depth + 1;
}
}
// 主函数,用于测试并打印结果
int main() {
// 假设已构建了一个二叉树,可以在这里替换实际的节点创建
Node *root = ...; // 你的二叉树根节点
int depth = maxDepth(root);
printf("The depth of the binary tree is %d.\n", depth);
free(root); // 不要忘记释放内存
return 0;
}
```
在这个代码中,`maxDepth` 函数通过比较左右子树的深度来确定整个树的深度。如果树为空(即所有节点都为 NULL),则认为深度为0。
阅读全文