二叉树中求度为2的结点的个数pta
时间: 2024-12-20 19:23:47 浏览: 25
在二叉树中,节点的度是指它拥有的子节点数目。一个节点的度可以是0(叶子节点)、1(只有一个子节点的节点)或2(有两个子节点的节点)。如果我们要计算度为2的节点个数,通常需要遍历整棵树并记录下来。
一种常见的算法是广度优先搜索(BFS),从根节点开始,每层访问完后,所有当前层级的节点都已经访问了他们的两个子节点。因此,对于每一层,我们都可以确定度为2的节点数等于该层节点数减去前一层节点数。这是因为前一层每个节点最多只能贡献一个度为2的节点。
另一种方法是对每个节点进行递归检查,如果一个节点有两个非空子节点,则它的度为2,然后递归地对子节点做同样的操作,累加计数。
以下是伪代码形式的大致描述:
```python
def count_degree_two_nodes(root):
if root is None: # 如果节点为空,返回0
return 0
left_degree = count_degree_two_nodes(root.left) # 计算左子树的度2节点
right_degree = count_degree_two_nodes(root.right) # 计算右子树的度2节点
if left_degree == 1 and right_degree == 1: # 如果当前节点左右都有一个度为1的子节点,那么它本身也是度为2
return left_degree + right_degree + 1
else:
return left_degree + right_degree # 普通情况,当前节点不是度为2,直接相加
```
阅读全文