求二叉树中度为2的结点以及叶子结点的数目
时间: 2024-05-14 10:14:48 浏览: 123
求度为2的结点个数-二叉树
二叉树中度为2的结点数目可以通过遍历二叉树并统计每个结点的度数得到。叶子结点数目可以通过统计二叉树中度为0的结点数目得到。
以下是一个示例代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def count_degree_two_and_leaves(root):
if not root:
return 0, 0
degree_two_count = 0
leaf_count = 0
if not root.left and not root.right:
leaf_count = 1
if root.left and root.right:
degree_two_count = 1
left_degree_two_count, left_leaf_count = count_degree_two_and_leaves(root.left)
right_degree_two_count, right_leaf_count = count_degree_two_and_leaves(root.right)
degree_two_count += left_degree_two_count + right_degree_two_count
leaf_count += left_leaf_count + right_leaf_count
return degree_two_count, leaf_count
```
这个函数接受一个二叉树的根节点作为参数,返回一个元组 `(degree_two_count, leaf_count)`,其中 `degree_two_count` 表示二叉树中度为2的结点数目,`leaf_count` 表示二叉树中叶子结点的数目。
该函数的实现思路是递归遍历二叉树,对于每个结点,判断它的度数。如果它的度数为0,说明它是叶子结点,将 `leaf_count` 值加1。如果它的度数为2,说明它是度为2的结点,将 `degree_two_count` 值加1。递归遍历左右子树并累加它们的度为2的结点数目和叶子结点数目,最后返回结果。
阅读全文