剑指offer:从上往下打印二叉树

题目描述

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

解题思路

广度优先遍历,LinkedList自带API,可以当作队列使用,入队列,依次添加rootroot.leftroot.right,并依次出队列,将val添加到list中。

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
            ArrayList<Integer> list = new ArrayList<>();
            LinkedList<TreeNode> queue = new LinkedList<>(); //利用LinkedList替代queue
            if(root == null){  //root为空
                return list;
            }
            queue.offer(root); //将root添加入队列
            while(!queue.isEmpty()){
                TreeNode node = queue.poll();  //出队列
                list.add(node.val);  //将val添加入list
                if(node.left != null){   //处理左子节点
                    queue.offer(node.left);
                }
                if(node.right != null){ //处理右子节点
                    queue.offer(node.right);
                }
            }
            return list; //返回
        }
posted @ 2020-03-07 20:23  灵图  阅读(84)  评论(0)    收藏  举报