[剑指OFFER]之树:JZ32 从上往下打印二叉树

文章目录

  • @[TOC]
  • 1.题目
  • 2.解法
    • 2.1 树的结构
    • 2.2 解法
  • 总结

1.题目

不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。

[剑指OFFER]之树:JZ32 从上往下打印二叉树_第1张图片

2.解法

2.1 树的结构

 class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
            this.val = val;
        }
    }

2.2 解法

使用宽度优先遍历,这道题很简单,记住这个模板,基本上宽度优先遍历都是这个套路。

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> ans = new ArrayList<Integer>();
        Queue<TreeNode> queue = new ArrayDeque<>();
        if(root!=null)
            queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            ans.add(node.val);
            if(node.left!=null) queue.offer(node.left);
            if(node.right!=null) queue.offer(node.right);
        }
        return ans;
    }

总结

queue 实现BFS。

算法系列在github上有一个开源项目,主要是本系列博客的demo代码。https://github.com/forestnlp/alg
如果您对软件开发、机器学习、深度学习有兴趣请关注本博客,将持续推出Java、软件架构、深度学习相关专栏。
您的支持是对我最大的鼓励。

你可能感兴趣的:(数据结构与算法,算法,数据结构,java,后端,开发语言)