求一个数组构成的二叉树的叶子节点的个数
时间: 2024-01-26 10:03:54 浏览: 86
C++如何实现二叉树叶子节点个数计算.pdf
假设数组为 arr,数组长度为 n。二叉树的叶子节点个数为数组中度为 0 的节点数。因此,我们需要先判断每个节点的度数,然后统计度数为 0 的节点数。
节点 i 的左子节点为 2*i+1,右子节点为 2*i+2。如果节点 i 的值为 -1,表示该节点不存在,即该节点的度数为 0。因此,我们可以遍历数组,判断每个节点的值是否为 -1,如果是,则该节点的度数为 0,统计变量 count 加 1。
以下是 Python 代码实现:
```
def count_leaf_nodes(arr, n):
count = 0
for i in range(n):
if arr[i] == -1:
count += 1
return count
```
示例:
```
arr = [1, 2, 3, -1, 4, -1, 5]
n = len(arr)
count = count_leaf_nodes(arr, n)
print(count) # 输出 3,即叶子节点个数为 3
```
在这个示例中,数组表示的二叉树如下:
```
1
/ \
2 3
/
4
\
5
```
其中叶子节点为 2、4 和 5,共计 3 个。
阅读全文