设计算法求二叉树T中度为1的结点总数
时间: 2024-02-09 11:10:20 浏览: 153
求度为2的结点个数-二叉树
可以通过遍历二叉树,统计度为1的节点个数来实现。具体算法如下:
1. 定义一个计数器count,初始值为0。
2. 从根节点开始遍历二叉树,对于每个节点,判断其度数是否为1,如果是,则将计数器count加1。
3. 递归地遍历节点的左右子树,重复步骤2。
4. 遍历完整个二叉树后,返回计数器count的值。
算法的时间复杂度为O(n),其中n为二叉树中节点的个数。以下是该算法的Python代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_degree_one(root):
if not root:
return 0
count = 0
if not root.left and root.right: # 只有右子树
count += 1
elif root.left and not root.right: # 只有左子树
count += 1
count += count_degree_one(root.left) + count_degree_one(root.right)
return count
```
在上面的代码中,我们定义了一个TreeNode类来表示二叉树中的节点。count_degree_one函数接受一个二叉树的根节点root作为参数,返回二叉树中度为1的节点个数。在函数中,我们首先判断当前节点的度数是否为1,如果是,则计数器count加1,然后递归遍历左右子树,将子树中的度为1的节点个数累加到count中。最后返回count的值即可。
阅读全文