面试题:之字形顺序打印二叉树

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

思路1:借助两个栈实现

思路2:在偶数行需要倒着打印,可以用list.add(0,node.val);反着插入节点值

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
        if(pRoot==null) return result;
        Queue<TreeNode> queue=new LinkedList<TreeNode>();
        queue.add(pRoot);
        int rows=1;
        while(!queue.isEmpty()){
            ArrayList<Integer> list=new ArrayList<>();
            int size=queue.size();
            for(int i=0;i<size;i++){
                TreeNode node=queue.poll();
                if(rows%2==0)
                    list.add(0,node.val);
                else
                    list.add(node.val);
                if(node.left!=null)
                    queue.offer(node.left);
                if(node.right!=null)
                    queue.offer(node.right);
            }
            result.add(list);
            rows++;
        }
        return result;
    }
}

 

posted on 2018-08-24 21:13  Aaron12  阅读(117)  评论(0编辑  收藏  举报

导航