python类str打印二叉树
时间: 2023-11-09 22:04:39 浏览: 96
可以通过递归地遍历二叉树,将每个节点的值转换为字符串,并将左右子树的字符串连接起来,最终得到二叉树的字符串表示。具体实现可以参考下面的代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class BinaryTree:
def __init__(self, root=None):
self.root = root
def __str__(self):
return self._str_helper(self.root)
def _str_helper(self, node):
if not node:
return ""
left_str = self._str_helper(node.left)
right_str = self._str_helper(node.right)
node_str = str(node.val)
if left_str or right_str:
return f"({node_str}{left_str}{right_str})"
else:
return node_str
```
这里使用了两个辅助函数 `_str_helper` 和 `__str__`。`_str_helper` 递归地遍历二叉树,将每个节点的值转换为字符串,并将左右子树的字符串连接起来。如果一个节点没有左右子树,则直接返回节点的字符串表示。如果一个节点有左右子树,则需要在节点的字符串表示周围加上一对括号,以便区分左右子树。最终返回的字符串即为整个二叉树的字符串表示。
`__str__` 函数调用 `_str_helper` 函数,并传入根节点作为参数,返回二叉树的字符串表示。这样我们就可以通过 `print(tree)` 来打印二叉树了。
阅读全文