输出要求
输出数组,按层输出,每层一个数组
java 实现
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
}
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
if(null==root){
return lists;
}
// 辅助队列
Queue<TreeNode> q = new LinkedList();
q.add(root);
while (!q.isEmpty()) {
ArrayList<Integer> list = new ArrayList<>();
// 下一层的缓存
ArrayList<TreeNode> children = new ArrayList<>();
// 队列为空当前层处理完毕
while (!q.isEmpty()) {
TreeNode node = q.poll();
list.add(node.val);
// 左树添加到缓存
if (null != node.left) {
children.add(node.left);
}
// 右树添加到缓存
if (null != node.right) {
children.add(node.right);
}
}
// 输出当前层
lists.add(list);
// 当前层的后代入队
q.addAll(children);
}
return lists;
}
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!