题解 | #从上往下打印二叉树#

从上往下打印二叉树

https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

方法一:借助队列层序遍历二叉树

public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> arr = new ArrayList<>();//写在最前面检验null
        if(root==null)return arr;//返回空数组,不能null(会报错)
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        arr.add(root.val);
        while(!queue.isEmpty()){
            int n = queue.size();
            //加一个for循环其实就是分行遍历了,题目要求不分行
            //那么就直接遍历queue里面每一个元素就行
            for(int i=0;i<n;i++){
                TreeNode node = queue.poll();
                if(node.left!=null){
                    queue.offer(node.left);
                    arr.add(node.left.val);
                }
                if(node.right!=null){
                    queue.offer(node.right);
                    arr.add(node.right.val);
                }
            }
        }
        return arr;
    }

方法二:递归(太复杂了看不懂

全部评论

相关推荐

不愿透露姓名的神秘牛友
01-08 16:50
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务