vlambda博客
学习文章列表

【剑指offer】60 把二叉树打印成多行


- 题目描述

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

示例1

输入

 {8,6,10,5,7,9,11}

返回值

 [[8],[6,10],[5,7,9,11]]


- 解题思路

按层遍历,cnt 控制每层的节点数

- Java实现

import java.util.ArrayList;

/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;
public TreeNode(int val) { this.val = val;
}
}*/import java.util.Queue;import java.util.LinkedList;public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> ret = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); while (!queue.isEmpty()) { ArrayList<Integer> list = new ArrayList<>(); int cnt = queue.size(); while (cnt-- > 0) { TreeNode node = queue.poll(); if (node == null) continue; list.add(node.val); queue.add(node.left); queue.add(node.right); } if (list.size() != 0) ret.add(list); } return ret; }}