求二叉树的层序遍历
此题即采用队列进行遍历即可。 前序一个栈,添加时,先右后左。 中序也是一个栈,一直添加,先左后右。 后序可以用两个栈(较简单),也可用一个栈
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
if(root==null) return new ArrayList<ArrayList<Integer>>();
ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();
Deque<TreeNode> queue=new LinkedList<TreeNode>();
queue.add(root);
while (!queue.isEmpty()){
ArrayList<Integer> list=new ArrayList<Integer>();
int l=queue.size();
for(int i=0;i<l;i++){
TreeNode node=queue.poll();
list.add(node.val);
if(node.left!=null) queue.add(node.left);
if(node.right!=null) queue.add(node.right);
}
lists.add(new ArrayList<>(list));
}
return lists;
}