从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行,数据之间用一个空格分隔,行尾无多余空格。
时间: 2024-02-13 21:07:16 浏览: 41
好的,这是一个经典的二叉树层序遍历问题。我可以给出一种基于队列的算法来解决。
首先,我们需要一个队列,用于存储当前层的节点。我们先将根节点入队。然后,我们进行循环,直到队列为空。在每次循环中,我们先记录当前队列的大小,然后遍历这个大小的节点,将这些节点的左右子节点入队。同时,我们将这些节点的值记录下来,最后将这些值输出即可。这样就可以保证按层输出,并且每一层输出一行。
下面是具体的实现代码,你可以参考一下:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def printTree(root):
if not root:
return []
res = []
queue = [root]
while queue:
size = len(queue)
level = []
for i in range(size):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res
```
这样,你就可以通过调用 `printTree` 函数来输出按层打印的二叉树了。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)