51.之字形顺序打印二叉树

来源:互联网 发布:python自动化测试虫师 编辑:程序博客网 时间:2024/06/07 05:05

题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路:先都是按从左到右存入list,然后判断奇数层list输出,偶数层先反转list再输出

import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;import java.util.Collections;/*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>> result=new ArrayList<ArrayList<Integer>>(); Queue<TreeNode> queue=new LinkedList<TreeNode>(); int level=0; if(pRoot==null){         return result;           } queue.offer(pRoot);        ArrayList<Integer> list; while(!queue.isEmpty()){ list =new ArrayList<Integer>(); int size=queue.size(); for(int i=0;i<size;i++){ TreeNode node=queue.poll(); if(node.left!=null)                 {                    queue.offer(node.left);                } if(node.right!=null){                 queue.offer(node.right);                   } list.add(node.val); } if(level==1){             Collections.reverse(list);               } result.add(list); level=level==0?1:0; } return result;    }}


原创粉丝点击