二叉树的层序遍历
二叉树的层序遍历
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
这个数据结构中学过,用的是队列存放节点。关键是Java中的队列:
- Queue在java.util.Queue包下,但只是一个抽象类,有一个实现类是linkedList,所以我们应该写
Queue<TreeNode>save=new LinkedList<TreeNode>(); - Queue的放入方法叫offer(),取出叫poll(),查看队列头方法是peek()
- 记得判断特殊情况:root是null的情况
import java.util.ArrayList;
import java.util.Queue;
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 {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer>ans=new ArrayList<Integer>();
if(root==null){
return ans;
}
Queue<TreeNode>save=new LinkedList<TreeNode>();
save.offer(root);
while(!save.isEmpty()){
ans.add(save.peek().val);
if(save.peek().left!=null){
save.offer(save.peek().left);
}
if(save.peek().right!=null){
save.offer(save.peek().right);
}
save.poll();
}
return ans;
}
}

浙公网安备 33010602011771号