c语言 编写函数求二叉树的叶结点个数、节点总个数、深度
时间: 2023-08-03 07:05:45 浏览: 120
以下是求二叉树叶结点个数、节点总个数、深度的C语言代码:
```
//定义二叉树结构体
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
//计算二叉树叶结点个数
int countLeaf(TreeNode* root) {
if (!root) {
return 0;
}
if (!root->left && !root->right) {
return 1;
}
return countLeaf(root->left) + countLeaf(root->right);
}
//计算二叉树节点总个数
int countNode(TreeNode* root) {
if (!root) {
return 0;
}
return countNode(root->left) + countNode(root->right) + 1;
}
//计算二叉树深度
int depth(TreeNode* root) {
if (!root) {
return 0;
}
int leftDepth = depth(root->left);
int rightDepth = depth(root->right);
return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}
```
在上述代码中,我们采用递归的方式计算二叉树叶结点个数、节点总个数、深度。其中,countLeaf函数用于计算叶结点个数,countNode函数用于计算节点总个数,depth函数用于计算二叉树深度。在每个函数中,我们都检查了二叉树的根节点是否存在,如果不存在则返回0。否则,我们递归遍历二叉树的左右子树,并根据需要进行计算。最终返回计算结果。
阅读全文