pta 递归统计二叉树中右孩子的个数
时间: 2024-11-21 11:21:16 浏览: 38
在计算机科学中,特别是在处理树形数据结构时,例如二叉树,"pta(遍历+统计)"通常指的就是前序遍历(Preorder Traversal)结合计数的方式。对于二叉树,如果我们想要递归地统计每个节点的右孩子个数,可以采用如下的思路:
**前序遍历(根-左-右)**,即先访问根节点,然后遍历左子树,最后遍历右子树。在前序遍历时,可以在访问每个节点的同时检查其是否为右孩子,如果是,则递增计数。
```python
def count_right_children(root):
if root is None: # 如果当前节点为空,返回0
return 0
else:
# 访问根节点并检查右孩子
right_count = 1 if root.right is not None else 0
# 递归统计左子树的右孩子数量,并累加到总和
total_count = count_right_children(root.left) + right_count
return total_count
```
在这个函数中,我们首先判断根节点是否有右孩子,如果有则计数加1;然后递归地计算左子树的右孩子数量,最后将两者相加得到结果。注意,这个函数会直接返回整个树中所有节点右孩子的总数,包括根节点的右孩子。
相关问题
递归统计二叉树中右孩子的个数pta
递归统计二叉树中右孩子的个数通常涉及对二叉树的深度优先搜索(DFS),特别是前序遍历。在前序遍历(根-右)的过程中,如果当前节点有右孩子,我们可以在访问完当前节点后再递归地去访问其右孩子,同时计数器加一。以下是Python中一个简单的递归函数示例:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_right_children(root):
if root is None:
return 0 # 空节点无右孩子
else:
# 访问根节点并检查是否有右孩子
count = (1 if root.right is not None else 0) # 如果有右孩子计数为1,否则为0
# 递归计算左子树和右子树的右孩子总数
count += count_right_children(root.left) + count_right_children(root.right)
return count
```
这个函数首先检查根节点是否为空,然后判断它是否有右孩子,并更新计数。接着,递归地计算左子树和右子树的右孩子数目,并将它们相加。
阅读全文