按之字形顺序打印二叉树

来源:互联网 发布:2017手机淘宝装修教程 编辑:程序博客网 时间:2024/05/14 21:43

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

题目链接:点击

PS:也可以用两个栈来做这题

import java.util.*;/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot)    {    ArrayList<ArrayList<Integer>> ret =new ArrayList<>();if(pRoot==null) return ret;ArrayList<Integer> list=new ArrayList<>();LinkedList<TreeNode> queue=new LinkedList<>();queue.addLast(null);queue.addLast(pRoot);boolean leftToRight=true;while(queue.size()!=1){TreeNode node=queue.removeFirst();if(node==null){Iterator<TreeNode> iter=null;if(leftToRight) iter=queue.iterator();else iter=queue.descendingIterator();leftToRight=!leftToRight;while(iter.hasNext()){TreeNode temp=(TreeNode)iter.next();list.add(temp.val);}ret.add(new ArrayList<Integer>(list));list.clear();queue.addLast(null);continue;}if(node.left!=null) queue.addLast(node.left);if(node.right!=null) queue.addLast(node.right);}return ret;    }}


原创粉丝点击