二叉树的层序遍历

二叉树的层序遍历

从上往下打印出二叉树的每个节点,同层节点从左至右打印。


这个数据结构中学过,用的是队列存放节点。关键是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;
    }
}
posted @ 2020-03-02 18:24  别再闹了  阅读(41)  评论(0)    收藏  举报