把二叉树打印成多行

怎甘沉沦 提交于 2020-02-15 16:07:28

import java.util.ArrayList;
import java.util.LinkedList;

/*
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) {
ArrayList<ArrayList<Integer>> m= new ArrayList<ArrayList<Integer>>();
if(pRoot==null)
return m;
LinkedList<TreeNode> deque=new LinkedList<TreeNode>();
deque.offer(pRoot);
int nextLevel = 0;
int toBePrinted = 1;
ArrayList<Integer> temp=new ArrayList<Integer>();
while(!deque.isEmpty()){

TreeNode pNode = deque.peek();
temp.add(pNode.val);
if(pNode.left!=null)
{
deque.offer(pNode.left);
nextLevel++;
}
if(pNode.right!=null)
{
deque.offer(pNode.right);
nextLevel++;
}
deque.poll();
toBePrinted--;
if(toBePrinted == 0)
{
toBePrinted=nextLevel;
nextLevel=0;
m.add((ArrayList<Integer>)temp.clone());
temp.clear();
}
}
return m;
}
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!