以二叉链表作为二叉树的存储结构,统计二叉树的叶结点个数的算法
时间: 2024-11-15 09:11:10 浏览: 6
在二叉链表中表示的二叉树中,每个节点通常包含两个指针,一个指向左孩子,另一个指向右孩子。要统计这种数据结构中的叶结点(即没有孩子的节点),可以采用深度优先搜索(DFS)策略。具体步骤如下:
1. **初始化计数器**:创建一个变量`count`并将其值设为0,用于记录叶结点的数量。
2. **遍历函数**:定义一个递归函数`countLeaves(node)`,输入当前节点`node`,如果`node`为空(已经到达叶子节点),则增加计数器;否则,对左右子节点分别递归调用该函数。
- 如果`node`的左子节点为空且右子节点也为空,则说明`node`是一个叶结点,增加`count`。
- 对于左子节点,如果它不是空,则继续调用`countLeaves(leftNode)`。
- 同样地,对于右子节点,如果它非空,也调用`countLeaves(rightNode)`。
3. **主循环**:从根节点开始调用`countLeaves(root)`。
4. **返回结果**:函数结束后,`count`就是叶结点的总数。
```c++
int countLeaves(Node* root) {
if (!root) return 0;
if (!root->left && !root->right) return 1; // 叶节点
return countLeaves(root->left) + countLeaves(root->right);
}
// 调用时传入根节点
int leafCount = countLeaves(root);
```
阅读全文