• 剑指Offer(Java版)第六十三题:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印, 第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。


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

    import java.util.*;

    public class Class63 {

    public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
    this.val = val;
    }
    }

    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot){
    ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> list = new ArrayList<Integer>();
    LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
    if(pRoot == null){
    return result;
    }
    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);
    }
    result.add(new ArrayList<Integer>(list)); //为了防止指向同一个list
    list.clear();
    queue.addLast(null);
    continue;
    }
    if(node.left != null){
    queue.addLast(node.left);
    }
    if(node.right != null){
    queue.addLast(node.right);
    }
    }
    return result;
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    }

    }

  • 相关阅读:
    Python3.3 学习笔记2 模块
    Python3.3 学习笔记4 函数 input & print
    Python3.3 学习笔记6 文件
    Python3.3 学习笔记8 函数
    Python3.3 学习笔记5 异常处理
    Python3.3 学习笔记9 类
    Python3.3 学习笔记10 图形化界面
    Python3.3 学习笔记1 初步安装
    Python3.3 学习笔记3 数据类型和运算
    Python3.3 学习笔记4 函数 内置和其他一些函数
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12551383.html
Copyright © 2020-2023  润新知