.编写算法,按前序次序打印二叉树中非叶子结点(算法必须有类定义)
时间: 2025-02-15 18:17:30 浏览: 32
为了按照前序遍历的方式打印二叉树中的非叶子节点,我们可以创建一个二叉树节点类`TreeNode`,并在其中实现前序遍历的递归函数。以下是使用Python实现的一个简单例子:
```python
class TreeNode:
def __init__(self, value=0, left=None, right=None):
self.value = value
self.left = left
self.right = right
def is_leaf(self):
return not bool(self.left) and not bool(self.right)
def pre_order_non_leaves(self, traversal_list=[]):
# 如果当前节点不是叶子节点,将其值添加到列表并继续遍历左右子节点
if not self.is_leaf():
traversal_list.append(self.value)
self.pre_order_non_leaves(self.left, traversal_list)
self.pre_order_non_leaves(self.right, traversal_list)
return traversal_list
# 示例用法:
root = TreeNode(1,
TreeNode(2),
TreeNode(3,
TreeNode(4),
TreeNode(5)))
print(root.pre_order_non_leaves()) # 输出:[1, 2, 3]
```
这个`pre_order_non_leaves`方法会返回一个包含所有非叶子节点值的列表。它首先检查当前节点是否是叶子节点,如果不是,则将其值加入结果列表,并对左、右子节点递归调用自身。
阅读全文
相关推荐













