剑指offer系列之21:从上往下打印二叉树

来源:互联网 发布:mac硬盘安装助手0.3 编辑:程序博客网 时间:2024/06/06 17:37

题目描述:从上往下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

思路:这是属于二叉树的按层遍历,该题可以用到数据结构队列,每一次打印到一个节点的时候,如果该节点有子节点,则把该节点的子节点按照左右顺序放到队列的末尾,接下来到队列的头部取出最早进入队列的节点,重复打印操作,知道队列中的所有节点都被打印出来为止。

import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/**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> result = new ArrayList<Integer>();        Queue<TreeNode> queue = new LinkedList<TreeNode>();        if(root != null){            queue.add(root);            while(queue.size() > 0){                TreeNode node = queue.poll();                result.add(node.val);                if(node.left != null){                    queue.add(node.left);                }                if(node.right != null){                    queue.add(node.right);                }            }        }        return result;    }}
0 0