层次遍历,修改之前,队列中元素的个数就是每层的节点数。

从上往下打印二叉树

http://www.nowcoder.com/questionTerminal/7fe2212963db4790b57431d9ed259701

层次遍历,修改之前,队列中元素的个数就是每层的节点数。

层级变量,使用队列。需要提前保留队列中的元素个数,因为添加元素后,调用queue.size()的结果会变化

    /**
     * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
     * @param root 二叉树
     * @return 打印结果
     */
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        LinkedList<TreeNode> queue=new LinkedList<>();
        ArrayList<Integer> res=new ArrayList<>();
        if(root==null){
            return res;
        }
        queue.addLast(root);
        while (!queue.isEmpty()){
            int size=queue.size();
            for(int i=0;i<size;i++){
                TreeNode cur=queue.removeFirst();
                res.add(cur.val);
                if(cur.left!=null){
                    queue.addLast(cur.left);
                }
                if(cur.right!=null){
                    queue.addLast(cur.right);
                }
            }
        }
        return res;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务