把二叉树打印多行
把二叉树打印成多行
http://www.nowcoder.com/questionTerminal/445c44d982d04483b04a54f298796288
解法
运用两个队列解决这个层序遍历的问题,工作队列永远是当前输出的那一层,还有一个辅助队列是用来存储孩子结点。如果工作队列空了,在看辅助队列有没有孩子结点。
代码
import java.util.ArrayList;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
if(pRoot == null){
return new ArrayList<>();
}
ArrayList<ArrayList<Integer> > array = new ArrayList<>();
ArrayList<TreeNode> nodes = new ArrayList<>();
nodes.add(pRoot);
ArrayList<TreeNode> ch = new ArrayList<>();
ArrayList<Integer> ans = new ArrayList<>();
while(nodes.size() != 0 ){
TreeNode node = nodes.get(0);
ans.add(node.val);
nodes.remove(0);
if(node.left !=null){
ch.add(node.left);
}
if(node.right != null){
ch.add(node.right);
}
if(nodes.size() == 0 && ans.size() !=0 ){
array.add(new ArrayList<>(ans));
ans.clear();
nodes.addAll(new ArrayList<>(ch));
ch.clear();
}
}
return array;
}
}
查看7道真题和解析