Skip to content

60 把二叉树打印成多行

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

解题思路

核心思想:层序遍历,每处理完一层就输出一次。

Python 实现

python
from collections import deque

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


def print_tree_by_lines(root):
    """
    按多行打印二叉树

    Args:
        root: 二叉树根节点

    Returns:
        list: 每层的节点值
    """
    if not root:
        return []

    result = []
    queue = deque([root])

    while queue:
        level_size = len(queue)
        level = []

        for _ in range(level_size):
            node = queue.popleft()
            level.append(node.val)

            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)

        result.append(level)

    return result


# 测试代码
if __name__ == "__main__":
    # 构建树:
    #     1
    #    / \
    #   2   3
    #  / \
    # 4   5
    root = TreeNode(1)
    root.left = TreeNode(2)
    root.right = TreeNode(3)
    root.left.left = TreeNode(4)
    root.left.right = TreeNode(5)

    result = print_tree_by_lines(root)
    for i, level in enumerate(result):
        print(f"第{i+1}层: {level}")

# 输出:
# 第1层: [1]
# 第2层: [2, 3]
# 第3层: [4, 5]
最近更新

基于 MIT 许可发布