(1)用三种遍历算法遍历该二叉树,给出对应的输出结果。 (2) 写一个函数查找二叉树中的节点,根据其是否属于该树,输出true或者false。 (3) 统计该树的满节点、叶子节点、总节点数。
时间: 2024-12-20 09:20:00 浏览: 13
(1) 遍历二叉树主要有三种常用方法:前序遍历、中序遍历和后序遍历。
- **前序遍历**:先访问根节点,然后遍历左子树,最后遍历右子树。例如,对于结构`1 -> 2 -> 4 -> 5 -> 3`,输出可能是 `1, 2, 4, 5, 3`。
- **中序遍历**:先遍历左子树,然后访问根节点,最后遍历右子树。这个例子的中序遍历会得到 `4, 2, 5, 1, 3`。
- **后序遍历**:先遍历左子树,再遍历右子树,最后访问根节点。在这个二叉树上,后序遍历的结果是 `4, 5, 2, 3, 1`。
(2) 查找二叉树中的节点函数可以这样设计:
```python
def search_binary_tree(node, target):
if node is None or node.val == target:
return bool(node)
elif node.val < target:
return search_binary_tree(node.right, target)
else:
return search_binary_tree(node.left, target)
```
这个函数会在给定的二叉搜索树中查找指定值,并返回一个布尔值表示目标节点是否存在。
(3) 要统计一棵二叉树的满节点、叶子节点和总节点数,可以这样实现:
```python
def count_nodes(root):
def helper(node):
nonlocal total_nodes, full_nodes, leaf_nodes
if node is not None:
total_nodes += 1
if node.left is None and node.right is None:
leaf_nodes += 1
elif node.left is not None and node.right is not None:
full_nodes += 1
helper(node.left)
helper(node.right)
total_nodes = 0
full_nodes = 0
leaf_nodes = 0
helper(root)
return total_nodes, full_nodes, leaf_nodes
```
此函数会递归计算树的节点总数、满节点(左右都有子节点的节点)和叶子节点(无子节点的节点)。
阅读全文