从上往下打印二叉树

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

由于本题要求所有结点都按序存放在一个集合中,而不是每层结点分开放,因此无法使用递归来做。
可以通过队列,并且本题用队列做也无需记录当前遍历层结点数以及下一层结点数。

import java.util.ArrayList;
import java.util.ArrayDeque;
public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> res=new ArrayList<>();
        ArrayDeque<TreeNode> ad=new ArrayDeque<>();
        if(root==null)return res;
        ad.add(root);
        while(!ad.isEmpty()){
            TreeNode temp=ad.pollFirst();
            res.add(temp.val);
            if(temp.left!=null){
                ad.add(temp.left);
            }
            if(temp.right!=null){
                ad.add(temp.right);
            }
        }
        return res;
    }
}

}```

你可能感兴趣的:(剑指offer)