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

来源:互联网 发布:node sass下载失败 编辑:程序博客网 时间:2024/06/05 09:55

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

思路
以下图为例这里写图片描述
先从根节点8开始打印,为了打印8节点的两个子结点,在遍历到该节点时把6和10两个结点保存到容器中,然后取出6的结点打印,此时把6的两个子结点5 7保存到容器中,这时容器中有(10,5,7),接下来取出10的结点打印,把10的两个子结点9 11放入容器中,此时容器中有(5 7 9 11)
它们都没有子结点,依次把它们取出打印。通过观察上述过程可以发现,这是个广度优先遍历过程,需要用到的数据结构是队列。

注释 广度优先遍历过程是把起始结点放入队列中,然后每一部先取出队列头部结点,遍历这个节点后把从它能到达的所有结点都放入队列中,重复这个过程,直到队列为空。

代码

import java.util.ArrayList;/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {        ArrayList<Integer> list = new ArrayList<Integer>();        if (root == null)            return list;        ArrayList<TreeNode> queue = new ArrayList<TreeNode>();        queue.add(root);        while (queue.size() != 0){            TreeNode temp = queue.remove(0);            if (temp.left != null)                queue.add(temp.left);            if (temp.right != null)                queue.add(temp.right);            list.add(temp.val);        }        return list;    }}
原创粉丝点击