从上往下打印二叉树

就是二叉树的层次遍历,使用一个队列来维持。

实现代码:

import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<Integer> ret;
    Queue<TreeNode> queue;
    
    public Solution() {
        ret = new ArrayList<Integer>();
        queue = new LinkedList<TreeNode>();
    }
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        if(root == null)
            return ret;
        queue.offer(root);
        
        while(!queue.isEmpty()) {
            TreeNode node = queue.poll();
            ret.add(node.val);
            
            //左子节点入队
            if(node.left != null) {
                queue.offer(node.left);
            }
            //右节点入队
            if(node.right != null) {
                queue.offer(node.right);
            }
            
        }
        return ret;
    }
}

吐槽一下:牛客网的代码模板和后台调用写的真烂。

原文地址:https://www.cnblogs.com/wxisme/p/5320535.html