打印一棵二叉树,要求从上往下打印,每一层从左往右打印

来源:互联网 发布:武汉淘宝摄影 编辑:程序博客网 时间:2024/06/05 10:58

思路:在二叉树的遍历中,用得最多的就是递归,二叉树的先序、中序、后序遍历都可以用递归实现,但是这里却要使用另外一种方式解决。利用队列先入先出的特性,我们先把二叉树每一层的节点按从左往右的顺序加入队列,然后再让队列中的所有节点依次出栈并打印节点值,此时得到的就是所需的结果。代码如下:

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> list = new ArrayList<>();        if(root==null){            return list;        }                Queue<TreeNode> queue = new LinkedList<>();        queue.offer(root);        while(!queue.isEmpty()){            TreeNode node = queue.poll();            list.add(node.val);            if(node.left!=null){                queue.offer(node.left);            }            if(node.right!=null){                queue.offer(node.right);            }        }        return list;    }}


0 0
原创粉丝点击