设计二叉树的二叉链表结构;2)基于该结构设计算法:求二叉树的叶子结点数。
时间: 2023-03-20 09:06:38 浏览: 119
1)二叉树的二叉链表结构包括一个数据域和两个指针域,分别指向左子树和右子树。具体实现可以定义一个结构体,包含数据域和两个指针域,如下所示:
```
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
```
2)求二叉树的叶子结点数的算法可以使用递归实现。具体思路是,如果当前节点为空,则返回0;如果当前节点没有左右子树,则返回1;否则,递归计算左子树和右子树的叶子结点数,然后将它们相加即可。具体实现如下:
```
int countLeafNodes(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1;
}
int leftCount = countLeafNodes(root->left);
int rightCount = countLeafNodes(root->right);
return leftCount + rightCount;
}
```
阅读全文