面试题61. 按之字形顺序打印二叉树

来源:互联网 发布:算法工程师专业 编辑:程序博客网 时间:2024/06/04 19:34

面试题61. 按之字形顺序打印二叉树

题目描述

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

思路:

修改BFS

import java.util.ArrayList;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>>();        if(pRoot == null) return result;        ArrayList<TreeNode> list = new ArrayList(); // BFS用到        list.add(pRoot);        int line = 1;        ArrayList<Integer> arr;        while(!list.isEmpty()) {            int size = list.size();            arr = new ArrayList();            for(int i = 0; i < size; i++) {                TreeNode node = list.get(0);                arr.add(node.val);                if(node.left != null) {                    list.add(node.left);                }                if(node.right != null) {                    list.add(node.right);                }                list.remove(node);            }            if(line % 2 == 0) {                Collections.reverse(arr);             }            result.add(arr);            line++;            arr = null; // gc        }               return result;    }}

这里写图片描述

阅读全文
0 0