假设二叉树中的每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法,计算一棵给定二叉树b中的所有单分支结点个数。
时间: 2024-05-02 08:19:14 浏览: 135
建立二叉树的存储结构-数据结构(图)(一)
可以轻易地想到一个递归算法:
```python
def count_single_branch_nodes(root):
if root is None:
return 0
if root.left is None and root.right is not None:
return 1 + count_single_branch_nodes(root.right)
if root.left is not None and root.right is None:
return 1 + count_single_branch_nodes(root.left)
return count_single_branch_nodes(root.left) + count_single_branch_nodes(root.right)
```
这个算法首先判断当前节点是不是单分支节点,如果是的话,就返回 1 加上单分支节点的子树中的单分支节点个数;如果不是,就分别递归遍历它的左右子树,并将它们的结果相加。
当然也可以使用栈或队列来实现非递归的遍历算法,这里就不再赘述。
阅读全文