按之字形顺序打印二叉树

仍然使用队列,在list中添加元素时改为使用头插和尾插法即可。

 public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        if(pRoot==null) return new ArrayList<ArrayList<Integer>>();
        ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();
        Deque<TreeNode> queue=new LinkedList<TreeNode>();
        queue.add(pRoot);
        int cnt=0;
        while (!queue.isEmpty()){
            ArrayList<Integer> list=new ArrayList<Integer>();
            int l=queue.size();
            for (int i=0;i<l;i++){
                TreeNode node=queue.poll();
                if(node.left!=null) queue.add(node.left);
                if(node.right!=null) queue.add(node.right);

                if(cnt%2==0) list.add(node.val);
                else {
                    list.add(0, node.val);
                }
            }
            cnt++;
            lists.add(new ArrayList<>(list));
        }
        return lists;
    }


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务