剑指offer(java实现)第22题“从上往下打印二叉树”-牛客网

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zm13007310400/article/details/81294779

题目描述

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

时间限制:1秒 空间限制:32768K 热度指数:214680

解答:

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

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

    }

}
*/
public class Solution {//思路:实际上就是宽度优先遍历,可以采用辅助队列:将根节点放入队列头,然后取出,并将它的左右孩子依次
    //压入队列;然后取出队列头元素,将队列头元素(此时也就是根节点的左孩子)的左右孩子依次压入栈队列...直到队列元素为0
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
                ArrayList<Integer> array = new ArrayList();
        if (null == root) {
            return array;
        }
        if (root.left==null && root.right==null) {
            array.add(root.val);
            return array;
        }
        LinkedBlockingQueue<TreeNode> queue1 = new LinkedBlockingQueue();
        queue1.add(root);
        while (queue1.size()!=0) {
            TreeNode curNode = queue1.poll();
            array.add(curNode.val);
            if (curNode.left != null) {
                queue1.add(curNode.left);
            }
            if (curNode.right != null) {
                queue1.add(curNode.right);
            }
        }
        return array;
    }
}

猜你喜欢

转载自blog.csdn.net/zm13007310400/article/details/81294779
今日推荐